программе запускается измерение АЦП и сразу же считывается измеренное значение из регистров. Это не совсем верно, вернее совсем не верно. Нужно дождаться, пока преобразование завершится, поэтому сперва рекомендую вставить строчку while (!(ADCSRA & (1 << 4))); // wait until ADC is ready
после строк
ADCSRA &=0xfb; ADCSRA |= 0x80 | 0x40 | 0x02 | 0x05;//Регистр ADCSRA:АЦП-вкл; Fацп=125кГц
в void swr_izm (void) (таких строки там две).
Теперь программа будет ждать, пока АЦП завершит преобразование
в исходной прошивке после запуска преобразования АЦП сразу считывались регистры этого самого АЦП, а их содержимое в этот момент непредсказуемо. АЦП для преобразования нужно 12 циклов (если это не первое преобразование, там вообще 24 цикла) АЦП + еще немножко времени, чтобы перезаписать регистры. Естественно, тактируется АЦП от предделителя, его частота меньше частоты ядра, норма - это от 50 до 200 кГц, да еще и 12 циклов надо. Ну а мк читал регистры сразу же...
Я задал вопрос на http://forum.cqham.ru/viewtop....start=0
и Мне ответил UU5JKB
Bсеэто все выложил, к тому, что , всетаки в прошивке было нетак.
исправленный hex.
Думаю Автор небудет против..