Problème TIMER1 PIC
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Problème TIMER1 PIC



  1. #1
    Pilou81

    Problème TIMER1 PIC


    ------

    Bonjour,

    Dans le cadre d'un projet, j'utilise un interruption pour détecter le changement d'état sur une pin front montant puis descendant. Le problème cest que je ne tombe pas sur le bon front. Donc pour le distinguer des autres je comptait utiliser le TIMER1 par exemple. Je le lance au moment du front montant puis je l'arrète au front descendant et je regarde si sa durée correspond au front que je recherche. Cela parait basique comme cela mais je n'arrive pas à le détecter et surtout a calculer la conversion entre le contenu des registres TMR1H / L et le valeur du front que je cherche environ 313us. Pourriez-vous m'éclairer?

    -----

  2. #2
    kronanberg

    Re : Problème TIMER1 PIC

    Salut !!

    Pour commencer tu peux visualiser avec une Leds si tu déclanches bien une interruption à chaque front montant et descendant de ton signal.
    Si tu as un oscilloscope vérifie que tu arrives bien à faire varier une PIN de sortie à la même fréquence que ton signal d'entrée.

    Pour le Timer tu peux utiliser le même procéder pour determiner sa fréquence. Tu peux changer l'état d'une de tes sorties à chaque interruption (overflow) du Timer.

    En général ton Timer s'incrémente à une fréquence de Fosc/4 avec Fosc qui est la fréquence de ton quartz !!

    a+

  3. #3
    Pilou81

    Re : Problème TIMER1 PIC

    merci pour ta réponse, j'ai réalisé un petit soft juste pour tester le timer et visblement il y a un souci. Le principe je viens faire clignoter des Leds lorsque le contenu du timer dépasse 256us en sachant qu'au préalable j'ai fais tourner le timer pendant une tempo de 312us mais résultat des courses les led ne clignote pas alors que je dépasse 256us???

    Code:
    void interrupt() {
    
    }
    
    void main() {
      ADCON1 = 0x0F;              // Config AN pins as digital
      PORTB = 0x00;               // Initialize PORTB
      TRISB = 0;                  // PORTB is output
      PORTC = 0;
      TRISC = 0;
      PIR1.TMR1IF = 0;            // clear TMR1IF
      TMR1H = 0x00;               // Initialize Timer1 register
      TMR1L = 0x00;
    
    
    
    //  INTCON = 0xC0;              // Set GIE, PEIE
    
      do {
          TMR1H = 0x00;               // Initialize Timer1 register
          TMR1L = 0x00;
          T1CON = 1;
          delay_us(312);
          T1CON = 0;
          if (TMR1H > 10)
          {
           PORTB = 0xFF;
           delay_ms(1000);
           PORTB = 0;
           delay_ms(1000);
           }
          
    
        } while (1);
    }

  4. #4
    kronanberg

    Re : Problème TIMER1 PIC

    Tu regardes ton résultat seulement sur TMR1H ? A tu configurer le Timer en mode 8 bits ou 16 bits ?

    Par exemple si tu es en mode 16 bits avec un quartz 8 MHz :

    Timer incrémenté toutes les 1/(Fosc/4) = 0,5 us donc pour 312us ton compteur sera égal à 624 soit 0x0270 donc ton
    TMR1H ne sera pas supérieur à 10 !!!!

    Mais à mon avis une meilleur façon de procéder est d'utilisé les interruptions du Timer !

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

    Cool Re : Problème TIMER1 PIC

    Bonjour,

    très très bonne idée de faire clignoter une led en utilisant un timer
    et son interruption afin d'en assimiler les principes de fonctionnements...
    un exemple, dans le post #12 et les suivants(explications):
    http://forums.futura-sciences.com/el...c16f690-2.html
    parmi d'autres:
    http://forums.futura-sciences.com/se...archid=4064510
    en fouillant un peu dans ces fils tu trouveras d'autres de
    mes exemples et de mes tentatives d'explications du
    fonctionnement d'un timer et d'une interruption...

    vede
    ;O]
    ______________________
    VIVE les PICS ;O]

  7. #6
    Pilou81

    Re : Problème TIMER1 PIC

    Ok merci pour vos éléments, je pense avoir réglé temporairement mon problème. Je voulais éviter de réutiliser une interruption pour ce timer car j'en utilise déjà de nombreuse et cela m'obligera à devoir gérer des priorités...

Discussions similaires

  1. timer1 sur PIC, Interruption??
    Par mmarc2007 dans le forum Électronique
    Réponses: 4
    Dernier message: 05/04/2010, 22h00
  2. Prob. TIMER1 PIC 18F6520
    Par jum0034 dans le forum Électronique
    Réponses: 15
    Dernier message: 17/02/2009, 16h42
  3. Utilisation du TIMER1 d'un PIC 18F comme compteur
    Par schneiderj dans le forum Électronique
    Réponses: 0
    Dernier message: 06/01/2009, 18h14
  4. réveiller mon pic avec timer1?
    Par Mikaeltrigo dans le forum Électronique
    Réponses: 3
    Dernier message: 11/03/2008, 09h15
  5. PB de timer1 sur pic
    Par romelec dans le forum Électronique
    Réponses: 3
    Dernier message: 01/03/2004, 14h11
Découvrez nos comparatifs produits sur l'informatique et les technologies.