Compteur de durée entre 2 fronts
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Compteur de durée entre 2 fronts



  1. #1
    flolarajasse

    Question Compteur de durée entre 2 fronts


    ------

    Bonjour,

    Je souhaite réalisé un programme permettant de calculer la durée entre un front montant et un front descendant sur une entrée de mon PIC (PIN B0) à une fréquence quelconque grâce à un GBF. Pouvez me dire ce qu'il ne va pas dans mon programme, car il affiche des valeurs qui n'ont rien à voir.
    L'envoi se fait par liaison USB, c'est pour cela qu'il y a des foncions qui s'y reportent.

    unsigned int8 time;

    #int_EXT
    void EXT_isr(void)
    { disable_interrupts(GLOBAL);
    while(!input(PIN_B0)); /* wait for signal to go high */
    set_timer1(0);
    while(input(PIN_B0)); /* wait for signal to go low */
    time = get_timer1();
    enable_interrupts(GLOBAL);
    }

    void main(void)
    {
    enable_interrupts(GLOBAL);
    enable_interrupts(INT_EXT);
    ext_int_edge(0, L_TO_H); //interruption sur front montant

    usb_init_cs();
    setup_timer_1(T1_INTERNAL | T1_DIV_BY_8);

    do
    {
    usb_task();
    usb_debug_task();


    printf(usb_cdc_putc,"La duree entre 2 fronts est de %d\n\n\r", time);
    } while (TRUE);

    }


    Merci d'avance

    -----

  2. #2
    sdec25

    Re : Compteur de durée entre 2 fronts

    Salut,
    Si c'est pour faire de l'attente active dans la routine d'interruption, autant ne pas utiliser les interruptions.

    Refais ton programme correctement : soit tout dans la fonction main, soit une interruption sur front montant ET descendant.

    Ensuite, quelles valeurs sont affichées par ton programme ? Comment sais-tu que les valeurs sont fausses ?

  3. #3
    flolarajasse

    Re : Compteur de durée entre 2 fronts

    pour une même fréquence, il m'affiche soit des nombres négatifs, soit des nombres positifs.

    Comment veut tu faire pour faire une interruption sur front montant ET front descendant étant donné que le signal arrive sur la même broche?

  4. #4
    sdec25

    Re : Compteur de durée entre 2 fronts

    Citation Envoyé par flolarajasse Voir le message
    pour une même fréquence, il m'affiche soit des nombres négatifs, soit des nombres positifs.
    Dans ce cas c'est le format qui n'est pas bon :
    %d = integer signé
    Essaie avec %u (u comme unsigned).
    Comment veut tu faire pour faire une interruption sur front montant ET front descendant étant donné que le signal arrive sur la même broche?
    Interrupt on change par exemple, ou changer le front de l'interruption. Mais le moins risqué et le plus simple est d'attendre dans la boucle while du main.

  5. A voir en vidéo sur Futura
  6. #5
    sdec25

    Re : Compteur de durée entre 2 fronts

    Je viens de m'apercevoir que c'est un doublon de http://forums.futura-sciences.com/el...ons-pic-3.html

  7. #6
    flolarajasse

    Re : Compteur de durée entre 2 fronts

    oui je me suis trompé

  8. #7
    flolarajasse

    Re : Compteur de durée entre 2 fronts

    Étant donné que lorsque je réalise l'attente dans mon main ne fonctionne pas (rien ne s'affiche), je voulais juste savoir comment les "Interrupt on change" fonctionnent, comment il faut s'en servir?

    Merci de ton aide

Discussions similaires

  1. [Physiologie] Courbe de la relation entre intensité et durée
    Par Leelee_Bee dans le forum Biologie
    Réponses: 2
    Dernier message: 27/10/2012, 14h35
  2. Différence entre MTBF et durée de vie
    Par invite16211440 dans le forum Électronique
    Réponses: 22
    Dernier message: 07/07/2010, 22h38
  3. radioactivité : rapport entre durée de vie et activité
    Par nightrow dans le forum Physique
    Réponses: 9
    Dernier message: 15/07/2009, 22h58
  4. connexions entre compteur et décodeur
    Par yassinefugi dans le forum Électronique
    Réponses: 19
    Dernier message: 25/01/2009, 12h19
Découvrez nos comparatifs produits sur l'informatique et les technologies.