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));
}