Bonjour à tous,
Débutant en Arduino, j'essaie d'utiliser le timer 1 sans interruption ni rechargement, mais j'obtiens un résultat erroné quant au timing.
Comme un listing vaut mieux qu'un long discours, voici le code, resucée d'un exemple pris ici :
/*
* Clignotement d'une DEL (LED en anglais) par timer 1.
*/
const byte Led = 13; // Pour utiliser la LED du module
void setup () {
pinMode (Led, OUTPUT);
TCCR1A = 0;
cli(); //au cas où
// horloge de base 16MHz -> période 0,0625 µs. Compteur à 16 bits
TCCR1B = 0b00000011; // division par 64, on compte en 4µs, on déborde toutes les 262,144ms
TIFR1 = 0b00000001; // TOV1
TIMSK1 = 0b00000000; // Interruption locale bloquée par TOIE1
}
int varCompteur = 0; // La variable compteur
void loop () {
if (bitRead (TIFR1, 0) == 1) { // Flag TOV2 mis à 1 ?
bitSet (TIFR1, TOV1); // Remise à zéro du flag TOV1 (voir texte)
//pour vérifier les 262ms on compte 10 fois
if (varCompteur++ > 10) { // <<<<<<<<<<<<<<<<<<<< chrono: 32s au lieu de 26,2s
varCompteur = 0; // On recommence un nouveau cycle
digitalWrite (Led, !digitalRead(Led)); // Inversion de la LED
}
}
}
Pourquoi cette erreur ?. Y a-t-il interférence avec une autre ressource ?
Merci pour toute piste.
JPM06