Arduino Micro + TimerOne

Bonjour,

J'utilise un arduino Micro (donc la même puce que le leonardo) et je voulais réaliser un timeOut sur ma communication série en utilisant la bibliothèque TimerOne.

Je pensais qu'il n'y avait pas trop de soucis niveau implémentation mais lorsque j'attache l'interruption du timer il rentre tout de suite dans ma fonction callback alors que j'ai mis un timer de 5 secondes (5000000µs).

Est ce que quelqu'un a déjà utilisé cette bibliothèque avec le leonardo et qui pourrait m'aiguiller.

Voici mon code :

void setup()
{
  /*timer*/
  Timer1.initialize(5000000);
  Timer1.attachInterrupt(timeOutCom);
  Timer1.stop();
  digitalWrite(LED_BUILTIN, LOW);
}

void loop()
{
    if (Serial.available()>0)
    {
      receptionData();
    }
}

void receptionData()
{
  byte bufferReception[200];
  int octetRecu = Serial.readBytes(bufferReception,Serial.available());

  if (bufferReception[0]==97 && bufferReception[1]==122 && bufferReception[2]==109)
  {
    Serial.print("OK");
    compute = false;
    
    /*timer*/
    Timer1.setPeriod(50000000);
    Timer1.start();
  }
}

void timeOutCom()
{
  digitalWrite(LED_BUILTIN, HIGH);
  Timer1.stop();
  compute = true;
}

Merci par avance.

Tom

Bonjour,

Peut-être en écrivant 5000000UL pour préciser un entier long non signé.

Bonjour Bilbo,

Merci pour la réponse je vais essayer dans la journée.

Visiblement le fait de rajouter UL ne fonctionne pas.

Est ce que quelqu'un aurai une autre solution ?

Même si c'est en utilisant autre chose pour faire mon timeOut je suis preneur.

Merci par avance.

Tom

Pour finir j'ai changé de bibliothèque, j'utilise MillisTimer qui n'utilise pas de timer interne au µ. Et du coup ça marche. C'est moins "jolie" qu'avec les timers internes mais ça marche pour ce que je veux faire.