Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Модератор форума: ivan_fd 
Форум Picbasic.ru » Программирование МК » PicBasicPro » АЦП (Нужна помощь)
АЦП
pic_anton Дата: Вт, 23.02.2010, 15:58  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 63
Репутация: 0   ±
Замечания:   ±
На сайте с 18.02.2010

Статус: Offline

Приветствую всех !!!
Вопрос у меня такой сейчас работаю с АЦП все работает но только есть маленькая проблема при выведении информации на ЛСД как поставить точку.
Выводиться 4980 а как сделать 4.980 пробовал делить на 1000 остается только 4 а откуда взять 980 не доходит.
Прикрепления: 9914004.jpg(116Kb)


Век живи, Век учись, и всего не постичь!!!
ЯНДЕКС Дата: 23.02.2010
brown Дата: Вт, 23.02.2010, 17:30  |                                                                                                                Сообщение # 2
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 337
Репутация: 11   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

Где-то так:
lcdout DEC1 (volt/1000), ".", DEC3 (volt//1000)


Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
pic_anton Дата: Ср, 24.02.2010, 12:52  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Понимаю
Сообщений: 63
Репутация: 0   ±
Замечания:   ±
На сайте с 18.02.2010

Статус: Offline

Спасибо я про эти // совсем забыл ведь смотрел в книгу видел фигу

Век живи, Век учись, и всего не постичь!!!
Ripper Дата: Вс, 18.04.2010, 09:27  |                                                                                                                Сообщение # 4
Группа: Пользователи
Ранг:  Новенький
Сообщений: 12
Репутация: 0   ±
Замечания:   ±
На сайте с 26.02.2010

Статус: Offline

Как узнать значения ADCON для разных процессоров?
В частности для PIC16F628A.
RVSTAR0340 Дата: Вт, 20.04.2010, 20:30  |                                                                                                                Сообщение # 5
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 28
Репутация: 2   ±
Замечания:   ±
На сайте с 23.04.2009

Статус: Offline

В частности, в PIC16F628A АЦП нет, поэтому нет регистра ADCON, следовательно, нет и значений.
А в общем, надо читать мануалы на конкретный проц.
В 16ф877, к примеру, для настройки и работы с ацп используются регистры ADCON0 и ADCON1
В 16 ф 676 - ANSEL
Кроме того, еще необходимо прописать регистр CMCON, дабы отцепить компараторы от аналоговых входов

Пример для 877А
CMCON = %11111111 - отключаем компараторы
ADCON1 = %10000010 ' Устанавливаем PORTA в режим аналогового входа с правым выравниваем
ADCON0 = %11000001 ' Конфигурируем и включаем АЦП

chiper Дата: Чт, 15.07.2010, 13:37  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 108
Репутация: 4   ±
Замечания:   ±
На сайте с 14.07.2010

Статус: Offline

У меня проблема, вот как вывести вообще вольты на LCD ?) если picbasicpro не потдерживает переменные типа real ?

написал, а не работает..... pic 16f877

Code

CMCON = %11111111 '- îòêëþ÷àåì êîìïàðàòîðû   
ADCON1 = %10000010 ' Óñòàíàâëèâàåì PORTA â ðåæèì àíàëîãîâîãî âõîäà ñ ïðàâûì âûðàâíèâàåì   
ADCON0 = %11000001 ' Êîíôèãóðèðóåì è âêëþ÷àåì ÀÖÏ

'******************************************************************************************
ux:
volt var byte
volt = "0"
Adcin 1, volt
LCDOUT $FE, 1, volt

     
pause 1000
goto ux


Как бы ты хорошо не паял, твой девайс на микроконтроллере без прошивки будет просто куском железа.
Сообщение отредактировал chiper - Чт, 15.07.2010, 13:38
Matrix252005 Дата: Чт, 15.07.2010, 14:03  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 676
Репутация: 36   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Приятного времени суток. chiper, попробуйте так. При этом он не будет показывать напряжение, он показывает значение считанное с АЦП.

volt var Word

Loop:
Adcin 1, volt
LCDOUT $FE, 1, #volt
pause 1000
goto Loop


THE TRUTH IS OUT THERE.

С уважением, Николай.

Сообщение отредактировал Matrix252005 - Чт, 15.07.2010, 14:07
chiper Дата: Чт, 15.07.2010, 14:27  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 108
Репутация: 4   ±
Замечания:   ±
На сайте с 14.07.2010

Статус: Offline

Спасибо!

Как бы ты хорошо не паял, твой девайс на микроконтроллере без прошивки будет просто куском железа.
Matrix252005 Дата: Чт, 15.07.2010, 14:31  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 676
Репутация: 36   ±
Замечания:   ±
На сайте с 12.10.2007

Статус: Offline

Всегда ПЛЗ. chiper, "В.Н. Хилинский - Учимся программировать микроконтроллеры PIC на языке PicBasic" эта книга Вам поможет. Мне она помогла.
Извиняюсь за ошибку.


THE TRUTH IS OUT THERE.

С уважением, Николай.

Сообщение отредактировал Matrix252005 - Чт, 15.07.2010, 14:35
chiper Дата: Пт, 16.07.2010, 23:23  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 108
Репутация: 4   ±
Замечания:   ±
На сайте с 14.07.2010

Статус: Offline

Подскажете как сканфигулировать АЦП только на 2х выводах порта А ??

мне надо ТОЛЬКО RA0 и RA1 - сделать аналоговыми. контроллер pic16f877


Как бы ты хорошо не паял, твой девайс на микроконтроллере без прошивки будет просто куском железа.
terrarus Дата: Сб, 17.07.2010, 13:01  |                                                                                                                Сообщение # 11
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Quote (chiper)
Подскажете как сканфигулировать АЦП только на 2х выводах порта А ??

Ответ смотрите на ресурсе http://terrarus.ucoz.ru/proton_plus_ide/index.html в разделе DATASHEETs/PIC/RUS/ PIC16F87X . Здесь можно по русски почитать про настройки портов PIC16F877. Обратите внимание на страничку [color=red]108[/color] даташита на PIC16F87X.

Хоть ты научный работник и молодой, но немножко ленивый...
Прочитай все же страничку 108. Раз САМ рзберёшься - на всю жизнь запомнишь.


Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
Сообщение отредактировал terrarus - Сб, 17.07.2010, 13:34
chiper Дата: Вс, 18.07.2010, 00:01  |                                                                                                                Сообщение # 12
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 108
Репутация: 4   ±
Замечания:   ±
На сайте с 14.07.2010

Статус: Offline

Вредный вы дядька =)

ну не чё, сам разобрался! Спасибо.



Как бы ты хорошо не паял, твой девайс на микроконтроллере без прошивки будет просто куском железа.
terrarus Дата: Пн, 19.07.2010, 08:56  |                                                                                                                Сообщение # 13
Группа: Модераторы
Ранг:  Разобрался
Сообщений: 542
Репутация: 16   ±
Замечания:   ±
На сайте с 21.08.2008

Статус: Offline

Я не вредный, я справедливый... И спрашиваеш ты одно и тоже.

Если у в Вас что-то не получается, подумай, не стоит ли прочитать инструкцию...!
chiper Дата: Чт, 22.07.2010, 21:55  |                                                                                                                Сообщение # 14
Группа: Проверенные
Ранг:  Продвинутый
Сообщений: 108
Репутация: 4   ±
Замечания:   ±
На сайте с 14.07.2010

Статус: Offline

Ребята подскажите почему у меня проподает высокий уровень на выводе d.1 во время выполнения этого участка программы ? какраз на 3 секунды пока идёт пауза

Code


DEFINE OSC 4   

' Èíèöèàëèçàöèÿ ÆÊÈ **********************************************************************   
DEFINE LCD_DREG PORTD ' Îïðåäåëÿåì ïîðò, ê êîòîðîìó ïîäêëþ÷åíû öåïè äàííûõ.   
DEFINE LCD_DBIT 4 ' Îïðåäåëÿåì ïåðâûé âûâîä, ê êîòîðîìó ïîäêëþ÷åíà øèíà äàííûõ,   

DEFINE LCD_RSREG PORTB ' Îïðåäåëÿåì ïîðò, ê êîòîðîìó ïîäêëþ÷åíà öåïü RS.   
DEFINE LCD_RSBIT 0 ' Îïðåäåëÿåì âûâîä, ê êîòîðîìó ïîäêëþ÷åíà öåïü RS.   

DEFINE LCD_EREG PORTB ' Îïðåäåëÿåì ïîðò, ê êîòîðîìó ïîäêëþ÷åíà öåïü E.   
DEFINE LCD_EBIT 1 ' Îïðåäåëÿåì âûâîä, ê êîòîðîìó ïîäêëþ÷åíà öåïü E.   

DEFINE LCD_BITS 4 ' Îïðåäåëÿåì ðåæèì 4 – ðàçðÿäíîé øèíû.   
DEFINE LCD_LINES 2 ' Îïðåäåëÿåì òèï ÆÊÈ.   
DEFINE LCD_COMMANDUS 2000 ' Îïðåäåëÿåì âðåìÿ çàäåðæêè ìåæäó êîìàíäàìè íà ÆÊÈ.   
DEFINE LCD_DATAUS 50 ' Îïðåäåëÿåì âðåìÿ çàäåðæêè ìåæäó ïîñûëêàìè äàííûõ.   

'Èíèöèàëèçàöèÿ ÀÖÏ ***********************************************************************

DEFINE ADC_BITS 10 '    
DEFINE ADC_CLOCK 100 '     
DEFINE ADC_SAMPLEUS 10 '    

trisa  = %00011111
ADCON1 = %10000100   

      

'Ïîäãîòîâêà ÌÊ ***************************************************************************
'trisa  = %11111111
'adcon1 = %00000010

portc = %00000000
trisc = %00000000
trise = %00000111
porte = %00000111
portd = %00000000
trisd = %00000000
     
task VAR BIT   
volt var word
voltpwr var word
b0 var byte
b1 var byte
c0 var byte
b00 var byte
b11 var byte
c00 var byte
tmp1 var byte   
tmp2 var byte
tmp3 var byte
tmp4 var byte
tmp5 var byte
on_geleostat var byte    
lev4 var byte

portd.1 = 1
tmp5 = 2
'*****************************

' ацп

acp:

'огромный кодддд.........
'................................
если что то, то goto on_acp

'огромный кодддд.........
'................................

on_acp:
    if porta.2 = 0 and tmp5 = 2 then
   trisa =%00011110
   Adcin 1, voltpwr
   LCDOUT $FE,1, " Out Power",":", DEC2(voltpwr/10), ".",DEC1(voltpwr//100),"V"
    LCDOUT $FE,192,"----------------"
     portc.4 = 0 : portc.5 = 0 :  portc.6 = 0 : portc.7 = 0
    pause 3000
    trisa =%00011111
        
   goto  acp
   endif

Вот немного укоротил в 10 раз что бы вы не ломали долго голову.


Как бы ты хорошо не паял, твой девайс на микроконтроллере без прошивки будет просто куском железа.
Сообщение отредактировал chiper - Чт, 22.07.2010, 22:01
Форум Picbasic.ru » Программирование МК » PicBasicPro » АЦП (Нужна помощь)
Страница 1 из 11
Поиск: