Hallo ich verzweifel hier gerade ein bisschen.

Ich versuche den Timer0 des ATMEGA32 zu verwenden. allerdings habe ich so das Gefühl, dass nur einmal die ISR ausgelöst wird und danach nichts mehr passiert.

ich währe euch sehr dankbar wenn ihr mir bei dem Problem helfen könntet.

Code:
#include <avr/io.h>
#include <avr/interrupt.h>


uint16_t t = 0;
uint8_t c = 0x00;


 void servo_init()
{
	//Die Steuersignale der Servos liegen an Port D an!
	//Port D als Ausgang definieren
	DDRD = 0xff;
	PORTD = 0x00;

	//Timer initialisieren
	TCCR0 = (1<<CS00);
	TCNT0 = 96;
	TIMSK|=(1<<TOIE0);
	//Intrerrupts einschalten
	sei();
	PORTD = 0x01;
}

//ISR beim überlauf des Timers T0
ISR(TIMER0_OVF_vect){
	TCNT0 = 96;

	PORTD = 0x03;

	t++;
	if(t>999){
		PORTD = c;
		t = 0;
		c++;
	}

	sei();

}


int main( void )	//Funktion die automatisch ausgeführt wird
{

	//PORTD
	DDRD = 0xff;
	//PORTD = 0b11111111;

	//PortC
	DDRC  = 0x00;
	PORTC = 0b11111111; // Pull ups -> High && reie 3 aktiviert

	//PORTA
	DDRA  = 0b11100000;
	PORTA = 0b01011111;

	servo_init();
	sei();

	while( 1 ) {                // Endlosschleife ' verhindert unkontrollierten zustand

		

    }

    return 0; // Wird von int main()  verlangt
}
Das Problem ist, das die Variable t in der ISR nicht hochgezählt wird und somit auch die Variable nicht am PORTD ausgegeben wird und auch nicht incrementiert wird. Das PORTD = 0x03; welches in der ISR steht wird allerdings ausgeführt.