Code:
getadc:
clr ergebnisl
clr ergebnish
ldi tmp,(1<<anzahl)
start:
sbi ADCSR,ADSC
warte:
sbis ADCSR, ADIF
rjmp warte
in tmp2, ADCL
add ergebnisl, tmp2
in tmp2, ADCH
adc ergebnish, tmp2
dec tmp
brne start
ldi tmp,anzahl
teile:
lsr ergebnish
ror ergebnisl
dec tmp
brne teile
ret
Das sollte so funktionieren
tmp und tmp2 sollen 2 Register >= R16 sein
ergebnisl und ergebnish egal welche
anzahl ist dann eine konstante, wie oft die Schleife durchlaufen soll.
In Deinem Fall 16.
Das Ergebnis steht dann in ergebnisl und ergebnish.
Der Muxkanal muß auch davor eingestellt werden.
Das wäre dann pooling, ich finde es aber trotzdem besser, wenn das in ein Interrupt rein käme.
Ich hoffe, daß Du damit was anfangen kanst.
Gruß Sebastian
P.S.
@Picknick,
hab ich was falsch gesagt ?
Lesezeichen