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

probleme pour créer un timer avec le pic18F45K22



  1. #1
    docEmmettBrown

    probleme pour créer un timer avec le pic18F45K22

    Bonjour,

    voila je veux créer un timer avec une certaine frequence, le probleme est quand je lance mon code, la sortie RA0 ne bouge pas du tout elle reste à 0 volt alors que je devrais avoir un signal carré.
    voici mon code:
    Code:
    #include <xc.h>
    #pragma config FOSC = INTIO67
    #ifndef _XTAL_FREQ
    	#define _XTAL_FREQ 16000000
    #endif
    
    int Flag_clock = 0 ;
    
    
    void init_pic()
    {
        OSCCON=0b01111100;  //Oscillateur interne à 16MHz
    
        ANSELA=0b00000000;
        TRISA=0b00000000;
        PORTA=0x00;
        
        T0CON = 0b11010111 ;// prescalaire : 256
        TMR0L = 50 ;
       
    }
    
    void interrupt sous_programm()
    {
        if(TMR0IF)
        {
            Flag_clock = 1 ;
            TMR0IF = 0 ;
            TMR0L = 50 ;
        }
    }
    
    
    void main(void)
    {
    
        init_pic();
        while(1)
        {
            if(Flag_clock)
            {
                Flag_clock = 0 ;
                LATAbits.LATA0 = !LATAbits.LATA0 ;
            }
    
        }
    }
    je vous donne le diagramme du timer0 ci joint, j'ai eu un peu de mal à le comprendre notamment les rectangles avec un 1 et un 0, sinon tous me semble correcte pour le fonctionnement du timer0.
    la doc technique ( timer0 page 159) : http://ww1.microchip.com/downloads/e...Doc/41412F.pdf

    merci d'avance pour votre aide.

    -----

    Images attachées Images attachées

  2. #2
    HULK28

    Re : probleme pour créer un timer avec le pic18F45K22

    Bonsoir,

    Vous avez oublié de déclarer INTCON
    Code:
    INTCON=0x11100000; // GIE=1, PEIE=1,TMR0IE=1
    en mettant TMR0L=50 uniquement avez vous une petite idée du timing que vous obtenez avec un timer sélectionné en 8 bits et avec un quartz de 16MHz?

    16MHz=62.5ns => Fosc/4= 4MHz => Ttick=0.25µs
    Vous utilisez un prescaler de 1:256 soit un pas de compteur=64µs

    Vous mettez un offset dans le timer0 de 50:

    256-50=206*64µs=13ms => 76Hz

    C'était ça votre calcul? En gros votre led semblera éclairer fixement il vous faudra un scope pour voir vos signaux carrés.

    Ajoutez INTCON et ça fonctionnera.
    @+

  3. #3
    HULK28

    Re : probleme pour créer un timer avec le pic18F45K22

    Et Flag_clock doit être une variable de type volatile également.
    Code:
    volatile unsigned int Flag_clock = 0;
    Dernière modification par HULK28 ; 03/07/2015 à 23h29.

  4. #4
    docEmmettBrown

    Re : probleme pour créer un timer avec le pic18F45K22

    oui HULK28 c'était bien ca le probleme, merci beaucoup !!

Sur le même thème :

Discussions similaires

  1. probleme pour creer un timer de 5secondes avec microchip
    Par Albert-cosmoff dans le forum Électronique
    Réponses: 4
    Dernier message: 06/05/2014, 16h41
  2. Problème avec timer SA555
    Par spirou3859 dans le forum Électronique
    Réponses: 12
    Dernier message: 25/10/2013, 22h20
  3. Réponses: 14
    Dernier message: 06/10/2013, 17h11
  4. Réponses: 6
    Dernier message: 13/06/2012, 15h41
  5. Problème de signal carré avec un timer
    Par lukes dans le forum Électronique
    Réponses: 5
    Dernier message: 23/01/2009, 20h19