[résolu] suspendre provisoirement INT0

Bjr,

j'aurais besoin dans une partie sensible de mon code suspendre provisoirement l' INTO sans suspendre les autres
si j'ai bien compris le document de 68tjs (Interruptions ATMega 328p - Tutoriels et cours - Arduino Forum) cela peux se faire a travers le registre EIMSK
pour suspendre je pense faire

EIMSK &= (0 << INT0);

et pour reprendre

EIMSK |= (1 << INT0);

ceci ne devrait pas modifier le vecteur d'interruption déclaré dans l'attachInterrupt du setup

attachInterrupt (0, Inter0, FALLING);

ai je bien compris ????

Bonjour,

C'est à peu près ça sauf que pour mettre le bit à 0 ce serai plutot:

EIMSK &= ~(1 << INT0);

il y a aussi détach,interrupt voir ici

detachInterrupt doit faire la même chose que EIMSK &= ~(1 << INT0) tout en gâchant des octets et des cycles horloge bien inutilement.

c'est vrai

kamill:
C'est à peu près ça sauf que pour mettre le bit à 0 ce serai plutot:

EIMSK &= ~(1 << INT0);

merci Kamill

pour detachInterrupt j'avais peur aussi de devoir refaire l'attachInterrupt complet donc de perdre du temps
merci dfgh & 68tjs

mais en fait ce n'est pas le traitement de cette interruption qui me fait perdre du temps (incrémente un int) malgré la fréquence d'interruption (anémomètre jusqu’à 100 fois par s) mais dans une partie du code ou je fais plein d'autres mesures, je vais donc chercher ailleurs ....

tu vas lire la vitesse du vent toutes les 10ms !!!!!!!!!!!!!!!!!!!
est ce réaliste?

dfgh:
tu vas lire la vitesse du vent toutes les 10ms !!!!!!!!!!!!!!!!!!!
est ce réaliste?

non c'est les impulsions de l'anémomètre qui provoque l'interruption, je les comptes dans le traitement de l'IRQ, toutes les secondes je relève le max (pour les rafales) et toutes les minutes je fais la moyenne (vent moyen), je les publient toutes les 15mn ...

rjnc38:
mais en fait ce n'est pas le traitement de cette interruption qui me fait perdre du temps (incrémente un int) malgré la fréquence d'interruption (anémomètre jusqu’à 100 fois par s) mais dans une partie du code ou je fais plein d'autres mesures, je vais donc chercher ailleurs ....

en fait je ne faisait pratiquement rien pendant 59s et je faisait toutes les mesures, les mises en forme et la publications des mesures a la 60° seconde et en définitif elle durait 2.5s
j'ai repris mon code et réparti les mesures (temp, humid, pression, poids, ...) durant les différentes secondes et à la 60° je met en forme et je publie et maintenant toutes les actions durent moins d'une seconde
J'ai mis la maquette en test avec un simulateur de vent permanent de 100Km/h et tout se passe bien ...