clignotante.ino
La LED de la broche 13 clignote à 1 Hz, pilotée depuis l'interruption SysTick : loop() reste entièrement libre. Un motif typique des cartes Teensy, dont le cœur ARM Cortex-M gère de vraies interruptions matérielles.
Matériel requis
Un Teensy 4.0 (NXP i.MX RT1062, Cortex-M7 @ 600 MHz, logique 3,3 V) alimenté par USB. Aucun composant externe ; la LED utilisateur de la carte suffit.
Câblage
Rien à câbler pour la LED 13. Attention : les broches Teensy travaillent en 3,3 V, pas 5 V.
Fonctionnement
La fonction systick_loop(), spécifique à Teensyduino, est appelée chaque milliseconde par le noyau ; elle teste millis() et bascule la broche. Les variables partagées sont volatile pour éviter les optimisations du compilateur.
Exécution
Avec Teensyduino dans l'Arduino IDE, choisir « Teensy 4.0 », Téléverser puis valider dans le Teensy Loader. Les broches sont en 3,3 V ; le 4.0 est pin-compatible avec le 3.2.
Variantes
Version simple avec delay(500) dans loop(), ou deux LED à des fréquences différentes en dupliquant la logique avec un tableau de périodes.
clignotante.ino
// Clignotement LED sur la broche 13 (LED utilisateur Teensy).
const int LED = 13;
volatile bool etat = false;
volatile uint32_t dernierBlink = 0;
// systick_loop() est une specificite Teensy : appelee chaque ms
// par le noyau, la LED clignote meme si loop() est occupee ailleurs.
void systick_loop() {
uint32_t maintenant = millis();
if (maintenant - dernierBlink >= 1000) {
dernierBlink = maintenant;
etat = !etat;
digitalWrite(LED, etat);
}
}
void setup() {
pinMode(LED, OUTPUT);
Serial.begin(9600);
while (!Serial && millis() < 2000); // attend l'ouverture du moniteur
Serial.println(F("Clignotement Teensy demarre"));
}
void loop() {
// Le coeur de travail est dans systick_loop() : loop() reste
// 100 % disponible pour d'autres traitements.
}