Спасибо defunct. На плате была разомкнута перемычка подающая aref на ножку. Сейчас проверил подключение AVCC, AREF на всем присутствует Vcc
В принципе прогресс есть, но..
Заметил такую особенность. Если опрашивать один канал то все нормально ( если заземлил то на выходе 0, если на плюс то на выходе 1022-1023). Но так происходит только если опрашивать один канал. если в цикле опрашивать 2 или больше каналов, на которые подан "сигнал"=vcc, начинается всякая чушь..(768,313,256....) По всем каналам которые опрашиваются... Пример подаю на ADC0=vcc, ADC1=gnd -> на выходе ADC0=783, ADC1=255 Пробовал ставить задержку между опрсами - не помогает.
#pragma interrupt_handler adc_isr:22 void adc_isr(void) { while ((ADCSRA & (1<<ADSC))!=0); ADCvalue = ADC; }
int ReadADCchannel6(char channel) { ADMUX = channel; ADCSRA|=(1<<ADSC); asm("sleep"); return ADCvalue; }
void adcscan(void) {int a; while(1){ a = ReadADCchannel6(0); UARTSendStr(1,"ADC0 = "); UARTSendInt(1,ADCvalue); a = ReadADCchannel6(1); UARTSendStr(1,"ADC1 = "); UARTSendInt(1,ADCvalue); ..... }
|