реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> АЦП PIC16F877
pipka
сообщение Oct 12 2007, 12:31
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 44
Регистрация: 30-07-07
Пользователь №: 29 465



Помогите разобраться с АЦП в PIC16F877.
При 1 вольте на входе почему-то на вызоде: portc=%10000000

Программа:

@ DEVICE HS_OSC,WDT_ON,CPD_OFF,PROTECT_OFF,PWRT_ON,BOD_OFF

define OSC 20
DEFINE ONINT_USED 1

Define ADC_BITS 10
Define ADC_CLOCK 3
Define ADC_SAMPLEUS 50

portc=%00000000
trisc=%00000000

portd=%00000000
trisd=%00000000

ad var word
TRISA = %00000011
ADCON1 = %10000011
ADCIN 1, ad
if adval >3 then
gosub w
endif

if adval <3 then
gosub r
endif

r:
portc=%00100000
portd.3=1
GOSUB r

w:
portc=%10000000
portd.3=1
GOSUB w

Спасибо
Go to the top of the page
 
+Quote Post
volodya
сообщение Oct 16 2007, 05:05
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 194
Регистрация: 14-02-07
Из: УКРАИНА
Пользователь №: 25 344



Цитата(pipka @ Oct 12 2007, 15:31) *
Помогите разобраться с АЦП в PIC16F877.
При 1 вольте на входе почему-то на вызоде: portc=%10000000

Программа:

@ DEVICE HS_OSC,_ON,CPD_OFF,PROTECT_OFF,PWRT_ON,BOD_OFF
..............................
ad var word
TRISA = %00000011
ADCON1 = %10000011
ADCIN 1, ad
if adval >3 then
.............................................


Ух какая интересная лексика? Не въехал на что похоже, откуда такое?

Попробуйте внимательно почитать примеры применений. По тексту не видно Но вы ADC настроили на работу с внешним VREF (ADCON1 = %10000011), А в железе он есть?
На чем проводится проверка? Вижу включение сторожевого WDT однако это будет сбрасывать CPU с определенным тактом. без команды CLRWDT.
Не видно операции с ADCON0 тут выбирается тактирование ADC, канал и включение преобразователя и старт преобразования.
И чтение результата из ADRES не нашел чтения?
В DS30292 описан порядок работы попробуйте по пунктам пройтись.
Удачи!!


--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть"
"Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
Go to the top of the page
 
+Quote Post
kolisnichenko_r
сообщение Oct 19 2007, 05:50
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 435
Регистрация: 12-09-07
Пользователь №: 30 482



Вдумчиво читайте описание микроконтроллера. Там подробно описано, даже на русском языке.
Вот кусок программы на С (PICC):
//форматирования результата, настройка портов
ADCON1=0x88;// ADRESH=000000xx
// ADRESL=xxxxxxxx
// Uref+->RA3
// Uref-->RA2
// RA0,RA1,RA5,RE0-RE2-analog.vh
//подпрограмма измерения
unsigned short ADC(unsigned char adc)//ADC с выбором канала
{ADCON0=adc;
Delaymus(23);// 23mks
ADGO=1;//
while(ADGO==1){;} //
//подготовка результата
return (ADRESH<<8)+ADRESL;//
}
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd June 2025 - 01:34
Рейтинг@Mail.ru


Страница сгенерированна за 0.0145 секунд с 7
ELECTRONIX ©2004-2016