Цитата(Andrеys @ Aug 16 2007, 12:42)

причина была найдена!
мне кажется, кусок проги из текста выше нерабочий, и вот почему:
[i]ADCSRA = (1 << ADEN)|(6 << ADPS0); //ADPS сооветствует 125кГц преобразование
обратите внимание на красную строку, с регистром ADCSRA делают операцию присваивания, а не поразрядное ИЛИ с присваиванием, таким образом в регистр пишется 2 единички, а остальные - нули, один из которых ADEN, преобразование в итоге запрещено.
правильно так ADCSRA |= (1 << ADIF)|(1 <<ADSC);
разрешено, смотрите внимательно
#define ADC_CONTROL (1 << ADEN)|(1 << ADIE)|(1 << ADPS2)|(1 << ADPS1)
ADCSRA = ADC_CONTROL | (1 << ADSC);
таким образом в регистре ADCSRA добавится один битик под номером ADSC которій определён
в хедерном файле выбранного МК.
Смотрите значение ADC_CONTROL.