Développeur>Tutoriels>Utiliser un timer
Ce tutoriel présente l’utilisation d’un timer avec la carte Esus. La fréquence du microcontrôleur ESP8266 est de 80Mhz soit 12.5ns le cycle processeur.
Exemple n°1
L’exemple n°1 permet de faire clignoter une led toute les secondes. La led est câble sur la sortie IO2 de la carte Esus.
#include <esusBoard.h> // (80Mhz frequence ESP8266) 1 cycle = 12.5ns => 1seconde/12.5ns = 80000000 const int timer_period=80000000; void setup() { initEsusBoard(); // sortie 2 pour la led pinMode(2, OUTPUT); noInterrupts(); // initialisation timer 0 avec interruption timer0_isr_init(); // spécifie la fonction à appeler lorsqu'une interruption du timer survient timer0_attachInterrupt(handler); // période du timer timer0_write(ESP.getCycleCount() + timer_period); interrupts(); } void loop() { } void handler(void) { timer0_write(ESP.getCycleCount() + timer_period); // toggle sortie 2 digitalWrite(2, !digitalRead(2)); }
Exemple n°2
L’exemple n°2 permet de faire clignoter une led toute les 5 secondes. La led est câblé sur la sortie IO2 de la carte Esus.
#include <esusBoard.h> // (80Mhz frequence ESP8266) 1 cycle = 12.5ns => 1seconde/12.5ns = 80000000 const int timer_period=80000000; void setup() { initEsusBoard(); // sortie 2 pour la led pinMode(2, OUTPUT); noInterrupts(); timer0_isr_init(); timer0_attachInterrupt(handler); timer0_write(ESP.getCycleCount() + timer_period); interrupts(); } void loop() { } void handler(void) { timer0_write(ESP.getCycleCount() + timer_period); // toggle sortie 2 digitalWrite(2, !digitalRead(2)); }