Approfondir : timers matériels et sections critiques
4 étapes·25 min·0/4 fait·quiz à réussir
voix
Mille fois par seconde, sans occuper le processeur : voilà ce que promet le matériel — un compteur qui bat au , atteint son échéance et sonne ta routine à l'heure exacte. Cette leçon règle ton premier battement à 1 , protège enfin tes lectures multi-octets par une vraie — la plus courte possible —, et met ta routine sur la balance de l' : quelques , prouvées.
📖 Comprendre
1. Le timer matériel : un compteur qui bat tout seul
Un matériel est un compteur câblé dans la : il avance d'un cran à chaque tic d'horloge, sans exécuter la moindre instruction, et déclenche une quand il atteint l'échéance réglée — puis repart à zéro. Résultat : une routine sonnée toutes les X , exactes au près, sans et sans aucun test dans la boucle.
Tu en utilises déjà sans le savoir : le PWM matériel est un dont deux échéances basculent une — c'est lui qui tient le de ta ou de tes pendant que la boucle s'occupe d'autre chose. Et est servie par un timer qui sonne mille fois par seconde pour tenir le compte. Le timer n'est pas une nouveauté : c'est le mécanisme caché de la moitié de ta boîte à outils.
2. Régler le métronome : prédiviseur et échéance
Deux réglages suffisent. Le prédiviseur (prescaler) ralentit l'horloge avant le compteur : divisée par 64, une horloge de 16 MHz donne 250 000 tics par seconde — un tic toutes les 4 . L'échéance fixe ensuite le nombre de tics avant la sonnerie : 250 tics de 4 µs font 1 000 µs, soit un battement toutes les millisecondes — 1 .
La formule générale : des sonneries = fréquence d'horloge ÷ prédiviseur ÷ échéance. Elle se lit dans les deux sens — choisir une cadence et en déduire les réglages, ou lire des réglages et en déduire la cadence. C'est la même règle de trois que partout ailleurs sur l'établi, appliquée au temps lui-même.
3. La lecture déchirée : quand un compteur ment
Un compteur de 32 bits occupe quatre , et le processeur les copie un par un : une tombée entre deux octets de la copie fabrique une valeur chimère — moitié ancienne, moitié nouvelle. L'exemple canonique : compteur à 255, la routine sonne au milieu de la lecture et le porte à 256 ; la boucle recolle 511 — une valeur qui n'a jamais existé.
ne protège pas de la déchirure : il garantit que chaque octet est relu en vraie , pas que les quatre forment un tout insécable. Le bogue est rare — il faut que la sonnerie tombe entre deux —, donc quasi impossible à reproduire : c'est précisément ce qui le rend redoutable, et ce qui impose de le prévenir plutôt que de le déboguer.
4. La section critique : couper, copier, rallumer
La encadre la copie : couper les , copier dans locale, rallumer — puis travailler sur la copie, sonnettes réactivées. Pendant la coupure, la ne retient qu'UNE sonnerie en attente par source : la première est servie au rallumage, les suivantes de la même source sont perdues sans trace.
La règle de dimensionnement est donc la même que pour la routine : le plus court possible. Une copie d'une ne rate jamais rien — aucune source raisonnable ne sonne deux fois si vite. Deux millisecondes d'affichage coupées, à 2 000 sonneries par seconde, en perdent trois sur quatre arrivées pendant la coupure. On coupe pour copier, jamais pour travailler.
🧮 Exemple guidé : mille battements par seconde, réglés et payés
Horloge de 16 MHz, prédiviseur de 64. Règle l'échéance pour un battement à 1 kHz, chiffre ce que coûte la routine (6 µs) à cette cadence, puis compare la ponctualité du timer au patron millis d'une boucle qui peut traîner 30 ms.
1.Le tic d'abord : 16 000 000 ÷ 64 = 250 000 tics par seconde — un tic toutes les 4 µs.
2.L'échéance ensuite : période voulue 1 ms = 1 000 µs ; 1 000 ÷ 4 = 250 tics. Le compteur sonne à 250 et repart à zéro : 1 000 battements par seconde, au quartz près.
3.Le prix : une routine de 6 µs × 1 000 sonneries/s = 6 000 µs = 6 ms par seconde — 0,6 % du temps processeur pour un métronome parfait.
4.La contre-épreuve millis : la même tâche cadencée dans la boucle sonne quand la boucle repasse — jusqu'à 30 ms de retard par battement, trente fois la période. Le timer, lui, ne glisse jamais.
Trois nombres — 16 MHz, prédiviseur 64, échéance 250 — et le robot gagne un battement de cœur à 1 kHz pour 0,6 % de son temps. La formule fréquence = horloge ÷ prédiviseur ÷ échéance se déroule dans les deux sens : apprends-la comme ta règle de trois du temps.
🛠 Pratiquer sur l'établi
01Configurer un à 1 : le battement de cœur du robot▶
Configure ton premier : prédiviseur 64, échéance 250, et une routine qui lève un à chaque battement — 1 000 fois par seconde. La scène du te montre un timer déjà à l'œuvre chez toi : c'est lui qui découpe la de ta , sans une ligne de code dans la boucle.
▶ sur l'établi
📖 Termes de cette étape
02Cadencer la sur ce battement▶
03Lire un compteur 32 : couper les le temps de la copie▶