Pages: [1]   Go Down
Author Topic: Interruption pas exécutée entièrement  (Read 506 times)
0 Members and 1 Guest are viewing this topic.
Cergy
Offline Offline
Full Member
***
Karma: 0
Posts: 137
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Bonjour à tous,
j'essaie de mettre en oeuvre les interruptions mais j'ai un soucis: la fonction appelée par l'interruption n'est pas toujours exécutée entièrement.

J'ai ce code:

Code:
     pinMode(contact_av_G,INPUT);
      digitalWrite(contact_av_G,HIGH); // active les R de pull-up
      attachInterrupt(0,int_rot_G,FALLING); // active les interruptions

// Traitement des interruptions:

void int_rot_G()
{
        status=2;
        Serial.println(">>>Inter G !!!");
        arret();
        
}

Sur l'entrée 2, j'ai un contact qui amène une masse lorsque je ferme un micro switch.
Sur la console, j'ai bien >>>Inter G !!! qui s'affiche, mais la fonction arret() n'est pas toujours exécutée et le prog continue à s'exécuter  >smiley-sad.

De quoi cela peut-il bien venir ???  :-/
« Last Edit: September 01, 2010, 09:53:01 am by vincelge » Logged

Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

Pays de la betise
Offline Offline
Sr. Member
****
Karma: 3
Posts: 417
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bonsoir,

désactive les interruptions le temps de traiter arret():
commande noInterrupts() en début de traitement de l'interruption
Réactive ensuite les interruptions à la fin de arret() avec la commande interrupts()

Gromain
Logged

"pour résoudre un gros problème, il est souvent plus facile de le diviser en petits problèmes élémentaires..."

projet domotique xPLDuino
IRC: freenode #xplduino

0
Offline Offline
Newbie
*
Karma: 0
Posts: 32
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Même remarque que précédemment, avec peut être un effet de rebond sur le switch lors du contact (double contact), d'où deux interruptions successives...et pas le temps de finir la fonction entre temps.

A+
JC
Logged

Cergy
Offline Offline
Full Member
***
Karma: 0
Posts: 137
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Merci pour les réponses, je vais essayer.
Par contre, si l'interruption était stoppée à cause d'un rebond, donc le redéclenchement de l'inter, la fonction devrait tout de même être complètement exécutée lors de la 2eme interruption, non ? Car à l'heure actuelle, je retourne dans la fonction loop, comme si rien ne s'était passé.

Je penchais plutôt pour un pb genre alim. L'appel de la fonction arret qui coupait  2 moteurs assez consommateurs, et qui aurait pu provoquer une fluctuation niveau alimentation. J'ai séparer l'alim de commande et l'alim de puissance sans résultats.

Je vais donc tester l'inhibition des interruptions.
Logged

Tous les jours, je roule en Electrique
Arretons de polluer !

Moi & mon Ardu

France
Offline Offline
Faraday Member
**
Karma: 23
Posts: 3031
There is an Arduino for that
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Quote
Par contre, si l'interruption était stoppée à cause d'un rebond, donc le redéclenchement de l'inter, la fonction devrait tout de même être complètement exécutée lors de la 2eme interruption, non ?
Il faudrait être certain que la gestion des IT est réentrante. Si quelqu'un à la réponse ....
Logged

Pages: [1]   Go Up
Jump to: