Bonjour,
J'ai quelques problèmes avec que j'essai de faire dans le titre:
Je cherche à mesurer a durée d'une impulsion 5 V , j'ai donc cherché à détecter un front montant qui met le compteur du timer à 0, puis ensuite, un changement est fait pour détecter un front descendant qui fait écrire la valeur du compteur du timer 1 dans la variable "val_fin".
J'ai quelques problèmes...
voici la process d'interruption:
(Au démarrage du programme la détection est programmée sur front montant )
Code:procedure interrupt; begin if Testbit(PIR1,CCP1IF) then begin if commence = 0 then // si mesure pas commencée begin CCPR1L:=0; CCPR1H:=0; // raz compteur timer 1 Lo(val_debut):=CCPR1L; // enregister les valeurs du timer 1 (0 à 7) dans "val debut" Hi(val_debut):=CCPR1H; // enregister les valeurs du timer 1 (8 à 15) dans "val debut" commence:=1; // mesure commencée ClearBit(PIR1,CCP1IF); // drapeau nettoyé CCP1CON:=%00000100; // détection sur front descendant maintenant end; if ((commence = 1) and (PIR1.CCP1IF=1)) then begin Lo(val_fin):= CCPR1L; Hi(val_fin):= CCPR1H; CCPR1L:=0; CCPR1H:=0; // raz commence:=0; ClearBit(PIR1,CCP1IF); // drapeau CCP1CON:=%00000101; // détec front montant ( pret pour une nouvelle mesure) end; end; end;
Voyez vous une grosse gaffe ? merci, désolé pour la présentation.
-----