Commande automatique de groupe électrogène - machine à états et autres questions

Artouste:
Bonjour bricofoy
je ne suis pas un specialiste des interruptions, mais j'ai joué avec il n'y a pas longtemps
voir ici
projet inutile donc absolument necessaire - #16 by Artouste - Français - Arduino Forum

suggestion : une fois en marche ton code ne voit plus jamais de rising ? (trop rapide ?)
juste pour test ça donne quoi avec change au lieu de rising , "une dent et un creux" c'est 3 "change"

je vois que tu stockes les valeurs dans un tableau, au lieu de les additionner comme moi. C'est plus rapide ainsi ?

Dans mon cas, en faisant des print avec la valeur du compteur, je constate qu'elle est majoritairement à 1 et n'a jamais dépassé 3, donc finlement le reste du code (machine à état, entrées/sorties, liaison série) que je pensais assez lent s'execute en fait assez rapidement.

Je n'ai aucun idée en revanche de la manière de débugger mon erreur occasionelle avec le pic à 740 au lieu des 666 theoriques...
En fait la seule explication que je vois à cette erreur c'est un passage en interruption avant la fin du traitement de la fonction calcule_rpm(), auquel cas j'ai alors un calcul fait avec une valeur de compteur erronée car elle n'a pas eu le temps d'être remise à zéro.
Peut-être que je devrait faire un detachInterrupt() a l'entrée dans la fonction, et à nouveau attachInterrup() à sa sortie ? ainsi je risque de rater un ou deux pulse, mais au moins e calcul restera juste avec les suivants ?