Da das letzte Problem gelöst ist habe ich ein schon wieder ein neues Problem:

In meinem Programm verwende ich den Timer Interrupt: SIG_Overflow 0, dieser wird auch ausgelöst, nun möchte ich aber auch noch einen Analog Wert einlesen!

Ich habe am Anfang meines Programm den ADC so initialisiert:
Code:
void adc_init(void)
	{
	ADMUX=0x00;							

	ADCSRA=(1<<ADEN);					
	ADCSRA|=(1<<ADPS2)|(1<<ADPS1);		
	
	SFIOR=0x00;													
	}
Und dann habe ich noch das Unterprogramm für den ADC im SIG_OVERFLOW0 aufgerufen:

Code:
prozent_istwert=adc(1);
Und jetzt kommt nach das Unterprogramm selber:
Code:
float adc (unsigned char kanal)
	{
	long int x;
	
	
	ADMUX |= kanal;						
	ADCSRA|=(1<<ADSC);					
		
	while(ADCSRA&(1<<ADSC))			
		;
	
	x=ADCL+ADCH*256;					
									
	
	prozent_wert=(x*100)/1024;		
									
	return(prozent_wert);
	
	}

Das Problem ist: wenn ich in das Unterprogramm gehe für den ADC, steigt er mir plötzlich aus und startet das Programm neu!!!

Zumindest ist es so im AVR STUDIO!
Deshalb meine Frage: Ist das nur im Studio so??? Weiß jemand warum das ist? Und was man dagegen tun kann?