deuligne et MsTimer2

Forum spécifique au shield Deuligne

deuligne et MsTimer2

Message non lude richie » Ven 17 Aoû 2012 15:11

bonjour,
je souhaite un rafraichissement de l'affichage du deuligne toutes les secondes et pour cela j'utilise la fonction MSTIMER mais l'introduction d'une commande lcd.xxx dans la routine bloque le programme.
quelqu’un a t'il la solution ?
merci
richie
 
Messages: 8
Inscription: Ven 17 Aoû 2012 15:01

Re: deuligne et MsTimer2

Message non lude Lionel » Lun 27 Aoû 2012 08:58

Bonjour,

pourriez vous poster votre code ?
Image - Distributeur officiel Arduino - Conception de shields
Avatar de l’utilisateur
Lionel
 
Messages: 734
Inscription: Mar 21 Déc 2010 09:52
Localisation: Toulouse

Re: deuligne et MsTimer2

Message non lude richie » Lun 27 Aoû 2012 12:46

bonjour et merci de votre réponse
le voici :
Fichiers joints
timer.ino
(636 Octets) Téléchargé 107 fois
richie
 
Messages: 8
Inscription: Ven 17 Aoû 2012 15:01

Re: deuligne et MsTimer2

Message non lude SesechXP » Lun 27 Aoû 2012 14:02

Bonjour,

Il est possible qu'une interruption survienne alors que la méthode lcd.SetCursor() est en cours d'exécution -> problème de réentrance. On pourrait placer cette méthode dans une section critique mais il est préférable que la routine d'interruption fasse le moins de choses possible.

Par exemple dans la fonction toto on lève un flag qui sera ensuite traité par la fonction loop. Quelque chose dans ce genre :

Code: Tout sélectionner
volatile bool flag = false;

void loop()
{
    if (flag)
    {
            digitalWrite (led,HIGH);
            delayMicroseconds  (10000);  //microsec ne bloque pas les interrup
            digitalWrite (led,LOW);

            lcd.setCursor(0,0);

            flag= false;
    }
}

void toto()
{
    flag = true;
}
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35

Re: deuligne et MsTimer2

Message non lude richie » Lun 27 Aoû 2012 16:13

je ne pense pas que ce soit la solution car sans la ligne lcd cursor la led fonctionne donc la routine toto est bien active.
par contre elle est allergique à " lcd xxx"
merci .
richie
 
Messages: 8
Inscription: Ven 17 Aoû 2012 15:01

Re: deuligne et MsTimer2

Message non lude SesechXP » Lun 27 Aoû 2012 17:12

Justement, je veux dire qu'il est possible qu'on entre à nouveau dans la fonction toto alors qu'elle est déjà en cours d'exécution...

Il faudrait le mesurer, mais le temps d'exécution de la fonction toto avec l'appel de la méthode setCursor est probablement bien plus important que le simple clignotement de la LED, ce qui peut mettre en évidence le problème.

Dans tous les cas il est impératif de faire le moins de choses possibles dans une routine d'interruption ;)
SesechXP
 
Messages: 228
Inscription: Sam 28 Mai 2011 09:09
Localisation: 35


Retourner vers Deuligne

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité

cron