leonardo it overflow timer 3

bonjour,

J'utlise une carte leonardo
je cherche à générer un it toutes les 4.19s. dans la routine d'it j'allume ou j’éteinds la led 13
fcpu=16mhz, je configure le prescale à 1024 donc période 64 us donc overflow d'un compteur 16bits toutes les 4.19s, si je me ne suis pas déjà trompé.
Mais l'appel de la routine a lieu toutes les 32.5 ms, suite à plusieurs heures de recherche, je ne vois pas le problème, merci pour vos lumières.
voici mon code :

// the setup routine runs once when you press reset:

void setup() {                


  TCCR3B = 0b0101;  // prescaler=1024 pour timer 3 -> 64us * 65 535 =4.19s entre deux overflow du compteur 16b


  TIMSK3 = 0b01; //it overflow autorisé sur timer 3


    sei(); 

}

// the loop routine runs over and over again forever:
void loop() {

}

ISR(TIMER1_OVF_vect) { // routine IT overflow timer 3 toutes les 4.19 secondes

    if (debug==true){

      digitalWrite(13, HIGH);
      debug = false;      
    }
    else{
      digitalWrite(13, LOW); 
      debug = true;
    }

  cli();

  }

ok comme je viens de trouver je me réponds :

outre les quelques erreurs dans mon code car j'ai copié collé la mauvaise version du code :
TIMER3_OVF_vect au lieu de TIMER1_OVF_vect
le cli(); dans la routine d'it n'a rien à y faire
le bouleen debug qui n'existe pas

le problème vient du registre TCCR3A que je supposais être à sa valeur de reset (=0), ce qui n'en n'est rien puisqu'il vaut 1, d'ailleurs j'ai vérifié idem pour TCCR1A. Je suppose et je ne vois pas d'autre explication que le registre est modifié par le boot loader.