Mam problem z uruchomieniem ADC w ATmega32.
Na początku wywołuję jeden raz:
InitADC: ldi R16, (1 << REFS0) + 3 out ADMUX, R16
ldi R16, (1 << ADEN) | (1 << ADPS2) | (1 << ADPS0) out ADCSRA, R16 sbi ADCSRA, ADSC ret
Potem w kółko:
ReadADC: sbic ADCSRA, ADSC ret sbis ADCSRA, ADIF ret sbi ADCSRA, ADIF
in R16, ADCL sts value, R16
sbi ADCSRA, ADSC ret
Efekt jest taki, że value przyjmuje jakąś tam wartość zależną od napięcia na nóżce tylko raz. Potem pozostaje bez zmian, przy czym procedura zapisu zmiennej value jest wykonywana (program przechodzi sbic i sbis).
Czy w tej atmedze siedzi jakiś haczyk?
Pozdrawiam, SM