clignotante.ino
El LED del pin 13 parpadea a 1 Hz, controlado desde la interrupción SysTick: loop() queda totalmente libre. Un patrón típico de las placas Teensy, cuyo núcleo ARM Cortex-M gestiona interrupciones hardware reales.
Hardware
Un Teensy 4.1 (NXP i.MX RT1062, Cortex-M7 @ 600 MHz, lógica de 3,3 V, Ethernet y almacenamiento flash adicional) alimentado por USB. Sin componentes externos; basta el LED de usuario de la placa.
Cableado
Nada que cablear para el LED 13. Atención: los pines Teensy trabajan a 3,3 V, no a 5 V.
Funcionamiento
La función systick_loop(), específica de Teensyduino, se llama cada milisegundo desde el kernel; comprueba millis() y alterna el pin. Las variables compartidas son volatile para evitar optimizaciones del compilador.
Ejecución
Teensyduino en el Arduino IDE, placa « Teensy 4.1 », Subir y botón del Teensy Loader. Pines de 3,3 V; el 4.1 añade Ethernet, USB host y pines adicionales.
Variantes
Versión simple con delay(500) en loop(), o dos LED a frecuencias distintas duplicando la lógica con una tabla de periodos.
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.
}