Moin moin!

Ich kaempfe immer noch mit dem ADC. Irgendwie beeinflussen sich die Kanaele untereinander. Wenn ich an drei ADCs gleichzeitig verschiedene Werte anlege, bekomme ich auf zweien den gleichen Wert, je einen der beiden erwarteten. Also zum Beispiel ist
ADC0=522,
ADC1=470,
ADC2=1023.
Das kommt raus, wenn ich nur den jeweiligen Block im Code benutze und den Rest auskommentiere. So wie es unten steht, kommt aber dann raus:

ADC0=522,
ADC1=1023,
ADC2=1023.

Ich krieg einfach nicht raus, wieso. Der Code unten muesste doch stimmen, oder? Kann vielleicht mal jemand seinen funktionierenden Code fuer das Auslesen von mehreren ADCs posten???

Danke,
Nils


Code:
void read_inputs(void) {
	ADMUX	=	0x02;					// Kanal 0 auswaehlen
	ADCSRA	|=	(1<<ADSC);				// Messung starten
	while(!(ADCSRA & (1<<ADIF)));		// Warten bis ADSC==0
	ADCSRA	|=	(1<<ADIF);				// ADIF auf Null setzen !?!
	rohsollwert	=	ADCL+ADCH*256;		// Ergebnis auslesen
	sollwert	=	rohsollwert/1023.0*100;		// In Prozent umrechnen
	
	ADMUX	=	0x01;					// Kanal 1 auswaehlen
	ADCSRA	|=	(1<<ADSC);				// Messung starten
	while(!(ADCSRA & (1<<ADIF)));		// Warten bis ADSC==0
	ADCSRA	|=	(1<<ADIF);				// ADIF auf Null setzen !?!
	rohistwertx	=	ADCL+ADCH*256;		// Ergebnis auslesen
	istwertx	=	rohistwertx/1023.0*100;		// In Prozent umrechnen
	
	ADMUX	=	0x00;					// Kanal 2 auswaehlen
	ADCSRA	|=	(1<<ADSC);				// Messung starten
	while(!(ADCSRA & (1<<ADIF)));		// Warten bis ADSC==0
	ADCSRA	|=	(1<<ADIF);				// ADIF auf Null setzen !?!
	rohistwerty	=	ADCL+ADCH*256;		// Ergebnis auslesen
	istwerty	=	rohistwerty/1023.0*100;		// In Prozent umrechnen
}