одиночное преобразование можно и без прерываний обойтись:
Код
#define ADC_EN_MASK (1 << ADEN)|(1 << ADPS2)|(1 << ADPS1)|(1 << ADPS0)
int ReadAdc(void)
{
ADCSRA = ADC_EN_MASK|(1 << ADSC);
while ( ADCSRA & (1 << ADIF) );
return ADCW;
}
Цитата
interrupt [ADC_INT] ....
...
delay_ms(20);
...
Задержка внутри обработчика прерывания, тем более не маленькая это если мягко сказать - "не по спортивному". Лучше так никогда не делать.