Ich habe den Code etwas geändert. Es funktioniert so. Das Flag wird gesetzt. Ich schaue noch warum der Int nicht ausgeführt wird.

Hier mein Code (den Prescaler habe ich geändert dadurch es schneller geht).
Code:
#ifndef F_CPU
#define F_CPU    1000000
#endif

#include <avr/io.h>
#include <util/delay.h>
#include <stdint.h>
#include <avr/interrupt.h>



ISR(TIMER2_OVF_vect)
{
PORTB ^= (1<<PB0);
}


int main(void){
    DDRB |= (1<<PB0);
    TCCR2 = (1<<CS20); //(1<<CS22) | (1<<CS20);
    TIMSK |= (1<<TOIE2);
    sei();
    while(1)
    {
        while(TIFR & TOV2)
        {
             PORTB ^= (1<<PB0);
            _delay_ms(500);
            TIFR |= (1<<TOV2);
        }
    }
}
MfG Hannes