Mauvaise temporisation Timer1 Pic
Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Mauvaise temporisation Timer1 Pic



  1. #1
    invite99a31ef7

    Mauvaise temporisation Timer1 Pic


    ------

    Bonjour,

    J'ai écrit un programme qui produit un signal PWM (1.2 ms d'impulsion pour 20 ms de période) en utilisant le module compare du module CCP d'un pic 16F877 - quartz de 8Mhz.
    J'ai bien un signal à impulsion sur l'oscillo, mais les valeurs de temps sont fausses.

    J'utilise le timer1 sur 16bits, pré diviseur de 8. Donc avec un quartz de 8Mhz ça donne :
    1/(8000000/4/8) = 4µs par cycle.
    comptant de 0 à 65536, pour 1.2 ms j'aurais 300 cycles.
    et pour 18.8ms (le temps de latence) 4700 cycles.

    Pourtant à l'oscillo, j'ai 0.8ms d'impulsion pour 10ms de temps de latence.
    Voici le programme en C, compilateur MikroC :

    Code:
    
    void interrupt ()
    {
    
                if (PIR1.CCP1IF == 1) //Si Valeur d'égalité atteinte
                {
               PORTC.F2 = 0;
    
    
               PIR1.CCP1IF = 0;  //Flag remis à 0 par soft
    
               TMR1H  = 0xDC;
               TMR1L  = 0xD8;
               
               PORTB.F3 = 1;
               PORTB.F4 = 0;
               }
    
                  
               if (PIR1.TMR1IF == 1) //Si débordement du Timer1
               {
                  PORTC.F2 = 1;
                  TMR1H   = 0x00;     //Init. Timer1
                  TMR1L   = 0x00;
                  
                  PIR1.TMR1IF =0;
                  
                  PORTB.F3 = 0;
                  PORTB.F4 = 1;
                  
                  }
    
    
    
    
            
    }
    
    
    void main()
    {
    
    TRISC = 0;
    PORTC = 0; //Port C en sortie
    TRISB = 0;
    PORTB = 0;
    
    T1CON = 0b00110001; //prédiv timer1 de 8
                       //Timer1 en service
                       
    INTCON=0b11000000;  // GIE = 1  &  PEIE = 1
                        //Autorise toutes les It
    PIE1.TMR1IE=1;      // Autorisation intérruption TIMER 1
    PIR1.TMR1IF = 0;    // clear TMR1IF
    
    
                      
    CCP1CON = 0b00001010; //module CCP en mode compare
                         //Interruption à l'égalité
                         //Flag CCP1IF = 1 à l'égalité
                         
    
    CCPR1H   = 0b00000010;
    CCPR1L  =  0b01011000; //valeur d'égalité = 1.2ms
    
    PIR1.CCP1IF  = 0;
    PIE1.CCP1IE  = 1; //Autorise les IT du mode compare
            
    TMR1H   = 0;     //Init. Timer1
    TMR1L   = 0;
    
    PORTC.F2 = 1;
    
    while(1)
    {
    
    
    
    PORTB.F1 = 1;
            
    }
    
    
    
    }
    Merci d'avance pour votre aide

    -----

  2. #2
    invite99a31ef7

    Re : Mauvaise temporisation Timer1 Pic

    Désolé erreur de ma part : Mon oscillo était mal réglé..

  3. #3
    invitec275ed83

    Smile Re : Mauvaise temporisation Timer1 Pic

    bONJOUR VOTRE PRgramme me parais correcte


    Mais j'ai vue que vous avez mis sur
    TMR1H = 0xDC; // EN déci 56536 cycle/4µS
    TMR1L = 0x D8;
    VOUS voulez 300 cyles/4µS

    ce n'ai pas= (65535-65235)=300;

    DONC= Cycle compte de 0 à 65235.


    TMR1H = 0xFE; // EN déci 65235 cycle/4µS
    TMR1L = 0xD3;

    Cordialement

  4. #4
    RISC

    Re : Mauvaise temporisation Timer1 Pic

    Salut Lukes,

    Par sécurité il vaut mieux faire cela :

    Code:
    if (PIR1.CCP1IF == 1 && PIE1.CCPIE == 1)
    et

    Code:
    if (PIR1.TMR1IF == 1&& PIE1.TMR1IE == 1 )
    De plus, pour les timers il comptent vers le haut donc pour une interruption tous les 300 cycles il faut mettre :
    65536 - 300 = 65236 dans le TIMER1

    a+

  5. A voir en vidéo sur Futura

Discussions similaires

  1. Problème TIMER1 PIC
    Par Pilou81 dans le forum Électronique
    Réponses: 5
    Dernier message: 27/04/2010, 17h00
  2. timer1 sur PIC, Interruption??
    Par mmarc2007 dans le forum Électronique
    Réponses: 4
    Dernier message: 05/04/2010, 21h00
  3. Prob. TIMER1 PIC 18F6520
    Par jum0034 dans le forum Électronique
    Réponses: 15
    Dernier message: 17/02/2009, 15h42
  4. réveiller mon pic avec timer1?
    Par Mikaeltrigo dans le forum Électronique
    Réponses: 3
    Dernier message: 11/03/2008, 08h15
  5. PB de timer1 sur pic
    Par romelec dans le forum Électronique
    Réponses: 3
    Dernier message: 01/03/2004, 13h11
Découvrez nos comparatifs produits sur l'informatique et les technologies.