CTC-Modus, Compare Match, ISR - Zeitgesteuerte Abläufe
// Timer1 CTC Mode Setup
void setupTimer1() {
cli(); // Interrupts deaktivieren
TCCR1A = 0; // Normal mode
TCCR1B = 0; // Timer stop
TCNT1 = 0; // Zähler zurücksetzen
// CTC Mode, Prescaler 64
TCCR1B |= (1 << WGM12); // CTC Mode
TCCR1B |= (1 << CS11) | (1 << CS10); // Prescaler 64
OCR1A = 31249; // Compare Match Wert
TIMSK1 |= (1 << OCIE1A); // Compare Match Interrupt enable
sei(); // Interrupts aktivieren
}
// Interrupt Service Routine
ISR(TIMER1_COMPA_vect) {
// Code wird alle 125ms ausgeführt
digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
}