hallo,
ich brauche bitte Eure Hilfe, ich weiß nicht in welche Stelle soll ich den Timer einschalten, und in welche Stelle solle ich den ausschalten, was ich weiß dass mein Timer geht in die fct ISR(OVF), wenn er den Wert von OCR1A erreicht hat. hier mein Code bitte um Korrektur danke
#include <avr/io.h>
#include <avr/interrupt.h>





unsigned int zx=0,zy=0;
void motorxR(unsigned int schr);
void motorxL(unsigned int schr);





int main()
{


DDRB=(1<<PB0)|(1<<PB1)|(1<<PB2)|(1<<PB3)|(1<<PB4)| (1<<PB5); // PIN0-5 als Ausgang für die Motoren definieren // PortB als Ausgang definieren
DDRC = 0; //PORTC als Eingang für PCINT MASK 1 definieren


// Timer 1 einstellen
//
// Modus 4:
// CTC , Top von OCR1A
//
// WGM13 WGM12 WGM11 WGM10
// 0 1 0 0
//
// Timer Vorteiler: 1
// CS12 CS11 CS10
// 0 0 1
//
// Steuerung des Ausgangsport: Set at BOTTOM, Clear at match
// COM1A1 COM1A0
// 0 1
// OCR1A=(fclk/2*N)-1 N: Vorteiler
TCCR1A = (1<<COM1A0) | (0<<WGM11);
TCCR1B = (0<<WGM13) | (1<<WGM12) | (1<<CS10);
OCR1A=18432;


//****************** Interrupt initialisieren *************************************
PCMSK1 = (1 << PCINT|(1 << PCINT9)|(1 << PCINT10)|(1 << PCINT11)|(1 << PCINT12)|(1 << PCINT13); //Pin C0-5 für Pin Change Interrupt in Maske 1 setzen
PCICR |= (1 << PCIE1); //Pin Change Interrupt Control Register - PCIE3 setzen für PCINT30

//*********** TIMER1 OVF *****************

TIMSK1|=(1<<TOIE1);
TCNT1=30;
zx=0;


sei();






while (1) {}
}



ISR(TIMER1_OVF_vect)
{
zx++;

if(zx>100)
{
PORTB&=~(1<<PB0);}

TCNT1=0;
zx=0;
}
ISR(PCINT1_vect) //Interrupt Service Routine
{

if(!(PINC&(1<<PC0)))
{
motorxR(zx);
}

if(!(PINC&(1<<PC1)))
{
motorxL(zx);
}


}


void motorxR(unsigned int schr)
{
PORTB|=(1<<PB3);
PORTB|=(1<<PB0);
}
void motorxL(unsigned int schr)
{
PORTB&=~(1<<PB3);
PORTB|=(1<<PB0);
}
danke