Цитата(smac @ Apr 1 2010, 23:31)

Весь код не смотрел, но по-моему Вы ADCH не вычитываете, что нужно делать обязательно, иначе регистры ADCH:ADCL не обновятся.
А чтобы их прочитать, надо написать
ADC_val = ADC;
Просто ADC без L или H - компилятор на это генерирует чтение слова в нужном порядке. Ну и разумеется ADC_val должно быть int16_t
Если же 10 разрядов не требуется, а достаточно 8, то нужно установить бит ADLAR: ADC Left Adjust Result и считывать только ADCH читать только старший байт без младшего разрешается.
ЗЫ. А зачем там _delay_ms(100) если все равно проверяется готовность АЦП?