Установил атмегу16 в стк500, пытаюсь снять значения с АЦП. Кусок программы прилагаю. Со всех каналов читается одно и тоже 1023. Компилятор ICC. Вроде и прерывания вызываются и в ADCvalue заносится значения. Но оно всегда одно и тоже 1023, даже если ножка заземлена. менял микросхемы - все равно программа возвращает 1023.
#pragma interrupt_handler adc_isr:15 void adc_isr(void) // ADC { ADCvalue=ADCL; ADCvalue|=(int)ADCH << 8; }
int getadc(void) { ADMUX = 0; ADCSRA|=(1<<ADSC); asm ("SLEEP"); // while ((ADCSRA & (1<<ADSC))!=0); return ADCvalue; }
Настройки в main() ACSR = (1<<ACD); ADCSRA = (1<<ADEN)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0); ADMUX = 0; SFIOR = 0; MCUCR = (1<<SE)|(1<<SM0)|(1<<ISC11)|(1<<ISC01);
Сообщение отредактировал yaroslavic - Aug 8 2006, 13:25
|