Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Configuration du Timer 1 du 16F877



  1. #1
    poche49

    Configuration du Timer 1 du 16F877


    ------

    Bonjour,

    Après plusieurs lectures du datasheet du 16f877, je ne comprend toujours pas pourquoi le timer 1 ne fonctionne toujours pas. J'ai pourtant suivi à la lettre le datasheet. Pour programmer, j'utilise Mikroc et pour vérifier le programme j'utilise ISIS ( le timer 0 fonctionne très bien!).
    Voici mon programme :
    Code:
    void interrupt()
    {
      // Timer 1
      if (INTCON.TMR1IF)
      {
         PORTB.B0 = ~PORTB.B0;      // Complémenter RB0
         INTCON.TMR1IF = 0;         // RAZ Flag
      }
    }
    
    void Init_Timer1()
    {
        T1CON.TMR1CS = 0;           // Choix Timer/Compteur
        T1CON.T1INSYNC = 1;
        
        //Prédiviseur à 1
        T1CON.T1CKPS0 = 0;
        T1CON.T1CKPS1 = 0;
    
        // Validation interruptions
        INTCON.PEIE = 1;
        INTCON.GIE = 1;
        PIE1.TMR1IE = 1;
    
        T1CON.TMR1ON = 1;           // Départ Timer
    }
    
    void main() 
    {
      TRISB.B0 = 0;
      Init_Timer1();
      {
      }while(1);
    }
    Merci d'avance

    -----

  2. Publicité
  3. #2
    flyingrock

    Re : Configuration du Timer 1 du 16F877

    Bonjour,

    Tu n'as pas renseigner les registres TMR1H et TMR1L.

    @+

  4. #3
    poche49

    Re : Configuration du Timer 1 du 16F877

    Toujours le même problème avec la MAJ de TMR1L et TMR1H :
    Code:
    void interrupt()
    {
      // Timer 1
      if (INTCON.TMR1IF)
      {
         TMR1L = 0;
         TMR1H = 0;
         PORTB.B0 = ~PORTB.B0;      // Complémenter RB0
         INTCON.TMR1IF = 0;         // RAZ Flag
      }
    }
    
    void Init_Timer1()
    {
        TMR1L = 0;
        TMR1H = 0;
        
        // Validation interruptions
        PIE1.TMR1IE = 1;
        INTCON.PEIE = 1;
        INTCON.GIE = 1;
    
        T1CON.TMR1CS = 0;           // Choix Timer/Compteur
        T1CON.T1INSYNC = 1;
        
        //Prédiviseur à 1
        T1CON.T1CKPS0 = 0;
        T1CON.T1CKPS1 = 0;
        
    
        T1CON.TMR1ON = 1;           // Départ Timer
    }
    
    void main() 
    {
      TRISB.B0 = 0;
      Init_Timer1();
      {
      }while(1);
    }
    Merci

  5. #4
    poche49

    Re : Configuration du Timer 1 du 16F877

    Je viens de trouver, le flag TMR1IF se trouve sur le registre PIR1 et non sur le registre INTCON!!

    Merci

  6. A voir en vidéo sur Futura

Discussions similaires

  1. Réponses: 14
    Dernier message: 06/10/2013, 17h11
  2. timer 5v ou 12v
    Par david75012 dans le forum Électronique
    Réponses: 9
    Dernier message: 29/11/2012, 21h22
  3. Programmation en C avec Timer 0 et Timer 1
    Par Groundation dans le forum Électronique
    Réponses: 43
    Dernier message: 20/04/2010, 13h27
  4. Besoin aide 16f877 (timer)
    Par maxime.drouin dans le forum Électronique
    Réponses: 3
    Dernier message: 06/06/2007, 18h10
  5. [Pic18F2620]Configuration du Timer
    Par fun_olivier dans le forum Électronique
    Réponses: 0
    Dernier message: 03/05/2005, 19h00
Découvrez nos comparatifs produits sur l'informatique et les technologies.