clignotante.ino

Teensy 3.2 · Archivo : clignotante.ino · Lenguaje : Arduino · Uso : Faire clignoter la LED intégrée à 1 Hz

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 3.2 (NXP Kinetis MK20DX256, Cortex-M4 @ 72 MHz, lógica de 3,3 V) 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

Instala el plugin Teensyduino en el Arduino IDE, elige la placa « Teensy 3.2 », pulsa Subir y luego el botón del Teensy Loader. Atención: pines de 3,3 V.

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.
}

← Volver a la ficha