Господа знатоки, снова прошу вашей помощи. На сей раз столкнулся с неразберихой при изучении АЦП в AVR. Собственно суть дела такова:
Решил собрать простенькую схему. На вывод PC0 подаётся напряжение, которое мы измеряем ( в качестве опорного - внутренний ИОН), затем полученное значение из ADCH выводим на светодиоды, подключённые к выводам PD0..7 . Проблема заключается в том, что регистр ADCH оказывается пустой, как и ADCL ( его я так же проверял). Опять же искал различные решения в интернете, но так ничего путного не нашёл. Возможно проблема вкралась в мозг. Вот код и схема
Код
.def temp=r16
rjmp Init
;=======Инициализация=======;
Init:
ser temp ; PD0..7 выходы
out DDRD, temp ;
clr temp ; На всякий пожарный
out PortD, temp ;
ldi temp, 0b11111110 ; PC0 - вход, остальные выходы
out DDRC, temp
ldi temp, 0b11100000 ; Муха настроена на внутренний ЙОН на 1.1V
sts ADMUX, temp ; с внешним кондёром на AREF, старшие биты в ADCH, сигнал снимается с ADC0 (PC0)
ldi temp, 0b10000111 ; Включил АЦП, одиночное преобразование, все что связанно с прерываниями обрубил,
sts ADCSRA, temp ; частота 1МГц/128~8кГц
;=======Основная программа========;
Start:
lds temp, ADCSRA ; Врубаем одиночное измерение
sbr temp, 6 ;
sts ADCSRA, temp ;
Check:
lds temp, ADCSRA ; Ждём окончания преобразования
sbrc temp, 6 ;
rjmp Check ;
lds temp, ADCH ; Выводим значение
out PortD, temp ;
rjmp Start ;
Прошу помочь, найти ошибку в моей программе