Bonjour Curiosus,
ne serait-il pas plus simple:
Début du programme
Lecture de la roue pour avoir la valeur en plus
Injecteur1 demande une ouverture
Interruption par front descendant, ont commute la sortie correspondante, déclanchement du timer1 et on prépare la future interruption par front montant"
L’interruption n'étant pas bloquante on peut faire autre chose.
Injecteur(X) demande son ouverture ont commuté directe sa sortie.
Interruption par front montant détecter sur l'injecteur1, on lit la valeur du timer1
Lancement du timer2 en comparateur suivant la valeur calculer du timer1.
Fin du timer2 on inverse la sortie et on prépare pour une interruption par front descendant sur injecteur1.
Injecteur(X) a fini on relance le timer2 avec la même valeur que l'injecteur1, et ceux pour tous les injecteurs.
De cette façon on utilise qu'une interruption, reste a savoir si le PIC sera suffisamment rapide
Un injecteur a un temps de réponse d'environ 80µS (un PIC a 20Mhz a du temps devant lui
)
Amitiés.
Marcus
PS j'ai un programme en C pour montage équivalent, celui que je n'arrive pas a modifier.
Le programme main est en assembleur pour Atmega328, il tourne bien sur table pas sur la voiture.