Moniteur série

Bonjour, j’ai un probleme avec mon moniteur série, je veux compter les impulsions d’un pluviometre, jusqu’à la pas de probleme, j’ai fais mon code :

volatile int compteur = 0;                                 
                                 
void setup()
{
  attachInterrupt (0, gestionINTO, RISING);   
  Serial.begin(115200);                         
}

void loop()
{

}

void gestionINTO()
{
  compteur=compteur+1;
  Serial.print(" Nombre d'impulsion = ");
  Serial.println(compteur);
}

Mais lorsque j’ouvre le moniteur série, il me donne quelques impulsions puis s’arrete sans même finir " Nombre d’impulsion = ". Je peux monter jusqu’a 40 impulsions ou juste 5, ou des fois, je n’en ai aucune ! Que faire ?

moniteur série.jpg

Je n'ai pas la documentation immédiatement sous la main mais quand tu entre dans une interruption il faut dans l'ordre :

  • sauvegarder le registre SREG dans une mémoire déclarée volatile"
  • désactiver les interruptions sinon les interruptions seront ré-entrante et c'est très compliqué à gérer.
  • faire ce que tu as à faire
  • rétablir SREG dans sa valeur d'origine.
  • réactiver les interuptions

Le playground Arduino doit expliquer tout ceci en détail.

Pas d'appel à Serial sous interruption.

Positionner un drapeau
Sortir de l'ISR
Gérer le drapeau dans la boucle principale.