Nun möchte ich noch den Abstand meiner mittleren IR-LED ausgeben. Die LED ist am PIN33 (PA7) des Atmega32 angehängt.

In der asuro.h habe ich folgendes eingetragen:

Code:
#define IR_RIGHT  (1 << MUX1)	//rechts
#define IR_LEFT	  ((1 << MUX0) | (1 << MUX1))	//links
#define IR_MITTE  (1 << MUX2) //mittig???
In der asuro.c:

Code:
/* Funktion zum Auslesen der IR-Sensoren (links, rechts, mitte) */
void IRData(unsigned int *data)

{
    // Prozessorinterne Referenz verwenden
    // Multiplexer auf linken Sensor schalten
    ADMUX = (1 << REFS0) | (1 << REFS1) | IR_LEFT;	
	// Wandlung starten
    ADCSRA |= (1 << ADSC);				
	// Warten, bis Wandlung beendet			        
    while (!(ADCSRA & (1 << ADIF)));	                
	// ADCIF zurücksetzen
    ADCSRA |= (1 << ADIF);			        
	// ADC-Wert auslesen
    data[0] = ADCL + (ADCH << 8);			

    // Prozessorinterne Referenz verwenden
    // Multiplexer auf rechten Sensor schalten
    ADMUX = (1 << REFS0) | (1 << REFS1) | IR_RIGHT;	
	// Wandlung starten
    ADCSRA |= (1 << ADSC);				
	// Warten, bis Wandlung beendet		
    while (!(ADCSRA & (1 << ADIF)));			
	// ADCIF zurücksetzen
    ADCSRA |= (1 << ADIF);
	// ADC-Wert auslesen
    data[1] = ADCL + (ADCH << 8);
				
    // Prozessorinterne Referenz verwenden
    // Multiplexer auf rechten Sensor schalten
    ADMUX = (1 << REFS0) | (1 << REFS1) | IR_MITTE;	
	// Wandlung starten
    ADCSRA |= (1 << ADSC);				
	// Warten, bis Wandlung beendet		
    while (!(ADCSRA & (1 << ADIF)));			
	// ADCIF zurücksetzen
    ADCSRA |= (1 << ADIF);				
	// ADC-Wert auslesen
    data[2] = ADCL + (ADCH << 8);			
}
Die Werte der rechten und linken LED stimmen, aber die Mittlere liefert Quatsch.

Was habe ich falsch gemacht?