Zwei Kanaele des ADC spinnen...
Moin moin!
Ich versuche zwei Werte ueber den ADC eines ATmega16 einzulesen, aber irgendwie klappt's nicht so wie ich will. Beide Kanaele einzeln gehen (Wenn ich den jeweils anderen Block unten auskommentiere). Wenn ich an beiden Kanaelen was anschliesse, gibt's auf x und w (auf beiden gleich) einen Mix der beiden Werte. Mach ich irgendwas falsch? Ich will keine Interrupts verwenden, nur pollen. Muss ich vielleicht trotzdem ADIF auslesen?? Eigentlich muesste doch das Warten auf ADSC==0 reichen?????
Kann jemand helfen?
Code:
int main(void) {
init();
while(1) {
ADMUX=(1<<MUX0); // Kanal 1 auswaehlen
ADCSR|=(1<<ADSC); // Messung starten
while((ADCSR&ADSC)==1) ; // Warten bis ADSC==0
w=ADCL+ADCH*256; // Ergebnis auslesen
ADMUX=(1<<MUX1)|(1<<MUX0); // Kanal 3 auswaehlen
ADCSR|=(1<<ADSC); // Messung starten
while((ADCSR&ADSC)==1) ; // Warten bis ADSC==0
x=ADCL+ADCH*256; // Ergebnis auslesen
print(w,0,x,200);
}
}
Nils