Hallo

Dann liege ich mit meinem Beispiel ja schon ganz richtig. Bei deinem Programm steckt hier ein Fehler:

TCCR0 = (1<<CS02); // Prescaler 1024

So werden alle Bits des TCCR0-Registers geändert, bis auf CS02 werden alle, auch CS00, auf null gesetzt (=gelöscht). Um die anderen Bits nicht zu verändern muss man den alten Inhalt des TCCR0 erst auslesen und dann gezielt das gewünschte Bit setzen:

TCCR0 = TCCR0 | (1<<CS02);

oder kurz:

TCCR0 |= (1<<CS02);

Die LEDs glimmen nur, weil du led_init(); vergessen hast. Damit werden die Pins der LEDs auf Ausgang gesetzt.

Da ich noch nix habe, was auf den Interrupt hin passieren sollte,...
Ein schlichtes
Code:
ISR (TIMER0_OVF_vect)
{
   led_set(3,1);
}
würde schon ausreichen um zu erkennen, ob die ISR überhaupt aufgerufen wird :)

Gruß

mic