Warum läuft Timer 3 ohne Startbefehl ?

Hallo,

ich bereite den Timer 3 vor und möchte später den Overflow Interrupt auswerten.
Nur löst der Overflow schon aus ohne das ich den Timer 3 jemals gestartet habe.
Der Timer läuft doch erst los wenn man die CS Bits setzt. Die sind aber nicht gesetzt.
Nach Reset leuchtet Led 31 sofort.

Habe den CTC Mode nochmal richtig probiert, der Compare Match ISR funktioniert und reagiert wie er soll.
Auch wenn ich die CS Bits nicht setze, passiert nichts, auch so wie es sein soll.

Setzte ich den Timer 3 aber in den Normal Mode, keine WGM Bits gesetzt, dann läuft irgendwas trotzdem und der Overflow löst aus. CS Bits sind nicht gesetzt und dennoch passiert irgendwas.
Mit folgenden Code dürfte Timer 3 noch nicht laufen, weil die CS Bits noch nicht gesetzt werden.
Led31 leuchtet dennoch kurz nach Reset.
Übersehe ich irgendwas*?*

/*
 Doc_Arduino - german Arduino Forum
 IDE 1.6.12
 Arduino Mega2560

 02.10.2016
  
*/

const byte Led31 = 31;

void setup()  { 

  pinMode(Led31, OUTPUT); 
  
  Timer_3_PreSet();      
}

  
void loop() {           

                                   
}   // loop Ende


// ****** Funktionen ******* //

ISR(TIMER3_OVF_vect)    // Timer3 Überlauf
{
  digitalWrite(Led31, HIGH);         // Debug
} 

    
void Timer_3_PreSet()   //  Normal Mode
{
  cli();         // Interrupts ausschalten
  TCCR3A = 0;    // Reset Register 
  TCCR3B = 0;    // Reset Register, Normal Mode
  TIMSK3 = 0;    // Reset Register (disable all Interrupts)
  TIMSK3 = (1<<TOIE3);  // enable Overflow Interrupt
  TCNT3  = 0;           // nullen
  sei();         // Interrupts einschalten
}  // end Funktion


void start_Timer3()   //  Start Timer 3
{
  TCCR3B |= (1<<CS32);   // Timer starten mit Prescaler 256
}  // end Funktion

Hallo,

ich glaube ich weiß warum. Der Overflow Interrupt steht von Haus aus erstmal an.
Warum weiß ich noch nicht.

Lasse ich den Timer mit folgenden Code nicht laufen, dann bleibt die LED dauerhaft an.
Starte ich den Timer, dann blinkt die Led.

Ich nehme dann doch lieber den CTC Modus. Den habe ich von Beginn an unter Kontrolle. :wink:

/*
 Doc_Arduino - german Arduino Forum
 IDE 1.6.12
 Arduino Mega2560

 02.10.2016
  
*/

const byte Led31 = 31;

void setup()  { 

  pinMode(Led31, OUTPUT); 
  
  Timer_3_PreSet();

  start_Timer3();      
}

  
void loop() {           

                                   
}   // loop Ende


// ****** Funktionen ******* //

ISR(TIMER3_OVF_vect)    // Timer3 Überlauf
{
  static bool state = false;
  state = !state;
  if (state == true) {
    digitalWrite(Led31, HIGH);         // Debug
  } else { 
      digitalWrite(Led31, LOW); 
  }  
} 


    
void Timer_3_PreSet()   //  Normal Mode
{
  cli();         // Interrupts ausschalten
  TCCR3A = 0;    // Reset Register 
  TCCR3B = 0;    // Reset Register, Normal Mode
  TIMSK3 = 0;    // Reset Register (disable all Interrupts)
  TIMSK3 = (1<<TOIE3);  // enable Overflow Interrupt
  TCNT3  = 0;           // nullen
  sei();         // Interrupts einschalten
}  // end Funktion


void start_Timer3()   //  Start Timer 3
{
  TCCR3B |= (1<<CS32);   // Timer starten mit Prescaler 256
}  // end Funktion