Hallo zusammen,

habe ein Problem mit folgendem Quellcode:

Code:
#define F_CPU 1000000UL
#include <avr/io.h>
#include <avr/interrupt.h>			
#include <util/delay.h>

ISR(TIMER1_COMPA_vect)			//Interrupt service routine wenn Vergleichswert erreicht ist
{	
	static uint16_t vTeiler = 0;		//Deklarieren von vTeiler
	swTeiler++;			//Zählschritt einstellen
	if (vTeiler == 2)		              //Wert bis Interrupt ausgelöst wird
	{
		vTeiler = 0;		
		PORTD |= (1<<PD6);	
		_delay_ms(4000);	              //Schmierzeit
		PORTD &= ~(1<<PD6);	
	}
}

	int main (void)

	{
		
		
		DDRD |= (1<<PD6);		              
		
		
		
												                                                                                    //Timer konfigurieren
		TCCR1B |= (1<<WGM12) | (1<<CS12);	//CTC-Mode und Vorteiler auswählen
						              //Tabelle
		
		TIMSK |= (1<<OCIE1A);		              //Timer1 auswählen 
							//Interrupt aufrufen, wenn Vergleichswert erreicht ist
							//Tabelle
		
		OCR1A = 65499;				//Vergleichswert zur bestimmung einer Sekunde
							//Interrupts aktivieren
		
		sei();
		
		
		int i = 0;					//Schleifenvariable deklariert
		while(i<2)				//Zwei mal wird die Schleife durchlaufen
		{	
			i++;
			PORTD |= (1<<PD6);		
			_delay_ms(3000);			//Schmierzeit
			PORTD &= ~(1<<PD6);
			_delay_ms(3000);
			
		}
                            return (0);

		
		
	}
Und zwar wird der Timer Interrupt nicht mehr ausgeführt, seitdem ich in die While-Schleife einen Code integriert habe.
Es macht auf mich den Eindruck als würde, das komplette Programm stehen, nachdem die While-Bedingung nicht mehr erfüllt wird.
Sorry für die Anfänger Frage, aber bin blutiger Anfänger, was das Programmieren betrifft.

Gruß
damnit