Hallo das habe ich soweit zusammen. Ein Problem habe ich aber noch und
zwar wen das Programm ISR(SIG_OUTPUT_COMPARE0B){} startet wird der TCNT0
Register nicht angehalten so das wen ich den wert von OCR0B ändere das
kein Einfluss auf die Frequenz hat! habe ich da was vergessen?

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

volatile uint16_t ImpulsZaehler1=0;
uint16_t a=50; //mitte 1,6ms


// Timer interrupt 4000Hz (4Mhz Quarz)
void Teimer0B_ON(void){
TCCR0B |= (1<<CS00) | (1<<WGM02);
OCR0B = 1;
TIMSK |= (1<<OCIE0B);
sei();
}


ISR(SIG_OUTPUT_COMPARE0B){
if (ImpulsZaehler1<100){
ImpulsZaehler1++;
}
if(ImpulsZaehler1==100){
ImpulsZaehler1=0;
}
}



int main(void){
Teimer0B_ON();
DDRD = (1 << DDB6);
while(1){
if ( ImpulsZaehler1<a ) {
PORTD &= ~(PIND ^ ( 1 << PD6) );
}
else{
PORTD = PIND ^ ( 1 << PD6 );
}
/*if ( PINB & (1<<PB0) ) {
a=42; //1,05ms min
}*/
}
}