@Besserwessi
Der ADC Wert wird nur gespeichert und direkt im Interupt verwendet um das Tastverhältnis des Timer 2 anzupassen.
Hier liegt auch mein Problem:

Ich konnte den Fehler jetzt stark eingrenzen. Wenn ich nur einen Kanal ausführen lasse, dann funkioniert es. Abgesehen von einem Faktor 2 den ich mir nicht erklären kann. Wenn 500mV am Shunt anliegen erhalte ich anscheinend 512 als ADC wert. Bei 10 facher Verstärkung und 5V referenz sollten es aber 1024 sein. Aber ansonsten funktioniert jeder Kanal für sich. Erst wenn ich im Interupt den Kanal wechseln will, klappt nichts mehr.

Das Problem liegt in den drei ADMUX Befehlen im ADC Interrupt.
Darf ich vielleicht nicht das ganze admus neu schreiben sondern nur die entsprechenden Bits toggeln lassen? Ich kann mir das Problem nicht erklären.

Code:
SIGNAL(SIG_ADC)
{
	if(ADC_COUNT)                     //drop first Measurement
		ADC_TMP+=(ADC<<1);         //eigenartigerweise Anpassung der ADC WERTE
	
	ADC_COUNT++;
	
	if(ADC_COUNT>1)
	{
		switch(ADC_CHANNEL)
		{
		case(0):									// BATTERY
			UBAT=ADC_TMP;
			ADC_CHANNEL=1;
			ADMUX|= 0b01001001;						// AREF/right/2-CH amp./10*ADC1->0
		break;

		case(1):									// NEAR LED
			I1=ADC_TMP;
			if((I_SET>I1) && (OCR1A>400)){
				OCR1A--;}
			else if((I_SET<I1) && (OCR1A<1022)){
				OCR1A++;}
			ADC_CHANNEL=2;
			ADMUX|= 0b01001101;						// AREF/right/2-CH amp./10*ADC3->2
		break;
		
		case(2):									// FAR LED
			I2=ADC_TMP;
			if((I_SET>I2) && (OCR1B>400)){
				REDOFF
				GREENON
				OCR1B--;}
			else if((I_SET<I2) && (OCR1B<1022)){
				REDON
				GREENOFF
				OCR1B++;}
			ADC_CHANNEL=0;
			ADMUX|= 0b01000111;						// AREF/right/8 unipol./ADC7
		break;
		}
		ADC_COUNT=0;
		ADC_TMP=0;
	}

	ADCSRA|= (1<<ADSC);								//start next Conversion*/
}