Écrire une ISR sûre
Gardez les gestionnaires d’interruption courts et utilisez volatile.
Écrire une ISR sûre est une leçon Arduino & IoT Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Arduino & IoT Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Arduino & IoT Academy comprend 4 leçons au total.
Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.
A Special Function
An ISR, or interrupt service routine, is the function that runs when an interrupt fires. It has rules that ordinary functions do not.
Keep It Short
The golden rule: make your ISR as short as possible. The main program is paused while it runs, so finish fast and get out.
Do the Heavy Work Later
Inside the ISR, just set a flag or bump a counter. Let the loop do the slow work like printing or math once it sees the flag.
void myISR() {
pressed = true;
}Shared Variables
An ISR and your loop both touch the same variable. The compiler may not expect it to change behind the loop's back, which causes subtle bugs. 🐞
The volatile Keyword
Mark any variable shared with an ISR as volatile. It tells the compiler the value can change at any moment, so always reread it.
volatile bool pressed = false;No delay Inside
Never call delay in an ISR. The timing that delay needs is itself paused during an interrupt, so it simply will not work.
Serial Is Risky Too
Avoid Serial.print inside an ISR. It relies on interrupts that are blocked while your handler runs, so output can stall or garble.
millis Freezes
Inside an ISR, millis stops advancing because its background counting is paused. Read elapsed time in the loop, not the handler.
Handle the Flag in Loop
Back in the loop, check the flag, act on it, then clear it. This is where the real response safely takes place.
if (pressed) {
pressed = false;
handlePress();
}Reading Multi-Byte Values
When the loop reads a multi-byte volatile value an ISR updates, briefly disable interrupts so you get a clean, unsplit number.
noInterrupts();
long c = count;
interrupts();Why These Rules Matter
Follow these rules and your ISR stays fast and predictable. Break them and you get freezes, lost data, or values that never seem to update.
Quick Check
Why must a variable shared between an ISR and the loop be marked volatile?
Recap
You learned to keep an ISR short, mark shared data volatile, skip delay and Serial, and do the real work back in the loop. 🎉
Questions Fréquemment Posées
La leçon « Écrire une ISR sûre » est-elle gratuite ?
Oui — le texte complet de « Écrire une ISR sûre » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Arduino & IoT Academy, passe à CoddyKit PRO. Le cours Arduino & IoT Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Écrire une ISR sûre » ?
Gardez les gestionnaires d’interruption courts et utilisez volatile. Tu pratiques Arduino & IoT Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Arduino & IoT Academy ?
Aucune expérience préalable n'est requise. Arduino & IoT Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Écrire une ISR sûre » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Arduino & IoT Academy ?
Oui. Chaque leçon Arduino & IoT Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Scrutation ou interruptions
- attachInterrupt sur une broche
- Écrire une ISR sûre
- Compter les impulsions d’un encodeur