Suite au problème qui m'avait été remonté, j'ai consulté la doc Atmel de l'ATMega328P.
Pour moi jowell88 a fait tout ce qu'il faut, notamment en positionnant les bits CS02:0 à 100 comme l'indique bien la doc.
Donc j'étais un peu perdu, ne comprenant pas pourquoi on obtenait une période si longue et j'ai donc appelé mon ami Jean-Luc à l'aide !
Et comme d'habitude, il a trouvé (un grand merci à lui
)
J'ai repris mon programme d'hier et j'ai simplement rajouté en fin de setup la ligne
bitClear(TIMSK0, 0);
ce qui revient à mettre le bit TOIE0 à zéro, empêchant ainsi les interruptions par overflow du timer 0.
Le programme fait clignoter la DEL plus rapidement et à la bonne fréquence. J'ai compté 60 allumages en 59,63 secondes (pas mal mes réflexes pour mon âge
) soit une fréquence de 1 Hz.
Cela démontre qu'utiliser les timers n'est pas forcément compliqué mais il faut faire attention à ne rien oublier concernant les registres à positionner, notamment l'autorisation ou non de faire des interruptions.
On peut aussi mettre
TIMSK0 = 0;
Attention à cette façon de faire qui va forcer d'autres bits du registre à zéro : ici, cela n'a pas d'importance, mais dans d'autres registres, cela pourrait en avoir. C'est la raison pour laquelle un bitClear peut être préférable et de plus, on voit mieux ce qui est manipulé.