Привет Богдан!
Было бы приятно тебе помочь.
Привожу пример на любимом твоём АСМе.
Код
; Сменить канал АЦП
izm1:
mov wpl,chan
andi wpl,7 ; выделить номер канала
subi wpl,-2 ; начать с канала 2
ori wpl,kadmux
.if chip == 88
sts admux,wpl; включить новый канал
.else
out admux,wpl; включить новый канал
.endif
.......
; Инициализация
.if chip == 88
.equ kadcsra = exp2(aden)+exp2(adsc)+exp2(adate)+exp2(adps1)+exp2(adps0)
.else
.equ kadcsra = exp2(aden)+exp2(adsc)+exp2(adfr)+exp2(adps1)+exp2(adps0)
.endif
; Для внутреннего АЦП
;.equ kadmux = exp2(refs1)+exp2(refs0)+exp2(adlar)
; Для внешнего АЦП
.equ kadmux = exp2(adlar)
ldi chan,0
ldi wl,kadcsra+exp2(adif)
.if chip == 88
sts adcsra,wl; сбросить флаг завершения преобразования
.else
out adcsr,wl; сбросить флаг завершения преобразования
.endif
mov wl,chan
subi wl,-2 ; начать с канала 2
ori wl,kadmux
.if chip == 88
sts admux,wpl; включить новый канал
.else
out admux,wpl; включить новый канал
.endif
Я, в данном случае использовал автоматический режим.
Вожможная причина твоей проблемы.
Я измеряю в прерывании от таймера. Интервал выбран по времени измерения. Я
сначала измеряю, а потом
переключаю канал. То есть должно пройти время от переключения до измерения.
С уважением.