Guten Abend zusammen

Ich programmiere nun schon den ganzen Abend am Timer, doch aus unerklärlichen Gründen funktioniert das ganze nicht. Was ich machen will: Eine LED in (vorerst beliebigen Takt) blinken zu lassen.

Folgende ausgangslage: Atmega168, interne Frequenz (8 Mhz, ausser ich hätte die Fusebits falsch gesetzt, ich glaube aber nicht).
LED an PD2.
Zuerst habe ich versucht, es nach dem Wiki von Roboternetz (und auch noch anderen Tutorials) zu programmiere, da bekam ich aber immer die Meldung vom Compiler, er kenne TCCR nicht.

Also habe ich das Datenblatt zur Hand genommen und gesucht. Da habe ich andere Registernamen gefunden, mit denen funktioniert zwar das Compilieren, aber die LED bleibt auf AN.

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

volatile unsigned int counter0;

ISR(SIG_OVERFLOW1)  //ISR
{
	counter0++;  //counter erhöhen
}

void init_interrupts(void)		//interrupt initialisieren
{
	TCCR1B |= (1<<CS00); //prescaler auf 64
	TCCR1B |= (1<<CS01); //prescaler
	
	sei();
	TIMSK1 |= (1<<TOIE1); //interrupts starten
}

inline void sleepms(uint16_t msec)
{
	uint16_t i;
	for(i=0; i<msec; i++)
	{
		sleep(100);
	}
}

inline void sleep (uint8_t t)
{
	counter0 = 0;
	while (counter0 < t);
}



int main(void)
{
while(1)
	{
		DDRD |= (1<<PD2);
		PORTD |= (1<<PD2); //LED einschalten
		
		sleepms(1000);
		
		PORTD &= ~(1<<PD2); //LED ausschalten
		
		sleepms(1000);
		
		return 0;
	}
}
Hier noch der Code. Ich nehme an, dass der Interrupt nicht (richtig) startet.

Ach ja, ich arbeite mit avr-gcc (falls es noch andere avr-c-compiler gibt, wüsste ich jetzt gar nicht) und avrdude unter Linux.

Im voraus Danke, falls mir jemand helfen kann...

Gruss Dave