Etabli
← Retour aux leçons
Leçon · AVN-08 · Interruptions et timers · 2/4

Interruptions et timers : réagir à la microseconde

5 étapes·35 min·0/5 fait·quiz à réussir
voix

Une leçon pour tout mettre au propre et au chronomètre : le contrat de la sonnette écrit noir sur blanc, les fronts d'un qui sonnent en rafale, la boîte partagée qu'on lit d'un seul geste, et ton premier — la sonnette que le temps fait sonner tout seul. À la sortie : des routines courtes, sûres et mesurées — quelques , pas plus.

📖 Comprendre

1. Le contrat, écrit noir sur blanc

Le contrat complet tient en trois temps et deux chiffres : l'événement sonne, la routine démarre environ 2 plus tard, elle rend la main environ 5 µs après — pour peu qu'elle se contente de noter, compter ou lever un . Rapportées à un tour de boucle de 30 ms, ces 5 µs pèsent un six-millième : la boucle ne peut littéralement pas s'en apercevoir.

Ce qui était un réflexe devient une loi : la légèreté de l' n'existe QUE si la routine reste courte. Toute la leçon déroule les conséquences — le qui sonne en rafale et se sans attendre, partagée qui se lit d'un geste, le qui sonne à l'heure — et se termine par la mesure : chronométrer sa routine fait partie du métier.

2. Les fronts parasites : quand le rebond sonne en rafale

Un sur sonne en rafale : chaque fermeture mécanique rebondit quelques millisecondes et chaque rebond est un réel, donc une sonnerie. L' de tes fondamentaux reste indispensable — mais sa forme change, car attendre est interdit dans une routine.

La parade compatible s'appelle la fenêtre temporelle : la routine note l'heure de chaque accepté, et rejette tout front arrivé moins de 10 ms après le précédent — un simple test, aucune attente. Les rebonds, groupés dans les premières millisecondes, tombent tous dans la fenêtre ; le vrai appui suivant, lui, passe. C'est l' réécrit pour le monde des .

relâché0 frontsau repos : la ligne est parfaitement stable

3. La boîte partagée : volatile, et la copie d'un seul geste

Première discipline : , toujours, pour toute variable que la routine écrit et que la boucle lit. Sans lui, le optimise dans une copie locale et la boucle ne voit plus jamais les mises à jour — un bogue invisible à la relecture du code, puisque chaque moitié du est correcte isolément.

Seconde discipline : la . Une valeur plus large qu'un se copie en plusieurs fois, et une interruption tombée au milieu de la copie fabrique une valeur chimère. Le geste sûr : couper les , copier dans locale, rallumer — deux lignes autour d'une troisième. On lit la copie, jamais l'originale en direct.

écriredistance18liresi distance < 20→ STOPmême boîte, contenu neuf à chaque mesure — la décision suit

4. Le timer : la sonnette que le temps fait sonner

Un est un compteur matériel qui bat tout seul au rythme du et déclenche une routine à chaque échéance : toutes les X , sans et sans test dans la boucle. C'est une dont l'événement n'est pas un extérieur mais le temps lui-même.

Face au patron , la différence est la ponctualité : millis dépend du retour de la boucle — trente millisecondes de mesure d', et l'échéance glisse d'autant —, le sonne à l'heure exacte, boucle occupée ou non. Les rythmes tranquilles restent à millis ; les cadences strictes — une , un régulier — passent au timer.

🧮 Exemple guidé : le budget d'une routine — un pour cent ou la noyade

Deux encodeurs rapides et un timer sonnent ensemble environ 2 000 fois par seconde. Compare deux routines : l'une fait son travail en 5 µs ; l'autre y ajoute un message série de 20 caractères à 115 200 bauds. Chiffre la part du temps processeur dans les deux cas.

  1. 1.La routine saine : 5 µs × 2 000 sonneries/s = 10 000 µs = 10 ms occupées par seconde — soit 1 % du temps processeur. Les 99 % restants vont à la boucle.
  2. 2.Le message série : à 115 200 bauds, un caractère part en ≈ 87 µs ; 20 caractères ≈ 1,7 ms — passées DANS la routine, boucle suspendue et sonnettes en attente.
  3. 3.La facture : 1,7 ms × 2 000/s = 3 400 ms à caser dans chaque seconde. C'est 340 % du temps : impossible. Le processeur ne fait plus qu'imprimer, la boucle ne tourne plus, les sonneries suivantes se perdent en cascade.
  4. 4.La version drapeau : la routine note et lève un drapeau (5 µs) ; la boucle affiche UNE synthèse par seconde, quand elle en a le loisir. Même information, retour à 1 % de charge.

Le même affichage, déplacé de la routine vers la boucle, fait passer le robot de 340 % — la noyade — à 1 % de charge. Multiplie toujours la durée de ta routine par sa fréquence : ce produit, et lui seul, dit si ton architecture tient debout.

🛠 Pratiquer sur l'établi

  1. 01Rater des en : la preuve

    Rejoue d'abord la démonstration : compte les crans d'un par pendant que la boucle mesure l', et constate le déficit à pleine vitesse. La scène du processeur endormi résume le crime : tout événement survenu pendant que la boucle attend est perdu sans laisser de trace.

    sur l'établi
    delay(500)0 ms…il compte, il ne fait RIEN d'autrependant delay : le monde continue, le processeur non

    📖 Termes de cette étape

Objectifs

  • +Déclencher du code sur un
  • +Cadencer une tâche au
  • +Écrire des courtes et sûres
🧪 S'entraîner dans le bac à sable

Quiz de validation

À réussir pour valider la leçon

Réponds de mémoire, sans remonter la page : c'est l'effort de rappel qui grave le cours. Les trois bonnes réponses valident la leçon.

1. Qu'a le droit de faire une routine d'interruption ?

2. Pourquoi déclarer volatile une variable partagée avec une routine ?

3. Une routine de 5 µs sonnée 2 000 fois par seconde occupe quelle part du processeur ?

🧠 Ce qu'il faut retenir

  • 1.Une suspend le , exécute l', puis reprend — rien ne se perd.
  • 2.Une reste minuscule : on lève un , le travail lourd attend la boucle.
  • 3.Les partagées avec une se déclarent , sinon le les cache.