[PIC]- Création timer 400ms
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

[PIC]- Création timer 400ms



  1. #1
    jorg1n

    [PIC]- Création timer 400ms


    ------

    Bonjour,

    voila, je reviens vers vous car je souhaite créer un timer, je sais que je peut fixer les valeurs de "départ" par le biais des registres TMR0L et TMR0H, sacahant que j'utilise un quartz de 20MHz, comment pourrais déterminer les valeurs de ces 2 registres ainsi que T0CON (Bit 2 à 0 pour le timer prescaler) pour réaliser un timer de 400 ms.
    Merci d'avance pour votre aide
    Bonne fin de journée

    -----

  2. #2
    Gérard

    Re : [PIC]- Création timer 400ms

    Bonjour,
    Peut-être une solution ici :
    http://users.picbasic.org/projects/P...icTimerCal.htm

  3. #3
    invite03481543

    Re : [PIC]- Création timer 400ms

    Salut,

    avec un timer 16 bits à 20MHz tu as, sans prescaler:1/(20.10^6/4)*65536=13,1ms comme période max.

    Il faut donc utiliser le prescaler pour atteindre le temps voulu:

    avec 1/32 tu obtiens: [1/(20.10^6)/4]*65536*32=419,43ms

    soit un tick d'une durée de: 419430µs/65536=6,4µs

    donc pour 400ms il te faut charger 19,43ms dans le timer soit 19430/6,4=3036 ticks, 400ms plus tard ton timer déborde et TMRxIF=1.
    @+

  4. #4
    Gérard

    Re : [PIC]- Création timer 400ms

    Bonjour,
    Avec un Qz de 3,2768MHz en entrée de TMR1 (16 bit), pas de prédiviseur, il y a débordement toutes les 0,04 seconde
    3,2768^6 / 4 = 819200Hz entrée TMR1
    819200 / 32768 = 25 soit 25 débordements / secondes

    Pour 400ms, il faut 10 débordements que tu peux gérer dans la routine d'IRQ.

    Attention, il faut recharger TMR1H avec la valeur 80h (bit7 à 1) pour avoir un comptage de 0 à 32768.

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

    Re : [PIC]- Création timer 400ms

    Je vous remercie pour votre aide...
    Bonne journée

    PS:Je n'ai pas réussi à faire fonctionner le logiciel...aucun paramètres n'est générés...

  7. #6
    jorg1n

    Re : [PIC]- Création timer 400ms

    Bonjour,

    j'ai un petit problème...j'arrive à lancer mon timer...
    mais impossible de modifier sa durée...il reste à 1,2µs..
    Même en changeant les valeur de TMR0H et TMROL, rien à faire...
    voila comment je procède:
    Sous programme:
    Code:
    void init_timer (void)
    {
      T0CON = 0x87;		// Initialisation timer0 - Enable Timer0/16bits timer/
      GIEH = 1;             // Autorise toutes les interruptions
      TMR0H = 0xE1;         // Fixe la valeur du registre TMR0H
      TMR0L = 0x7C;         // Fixe la valeur du registre TMR0L
      TMR0IF = 0;           // Initialise le flag TMR0IF d'IT du Timer 0
      TMR0IE = 1;           // Autorise les interruptions de TMR0
    }
    
    void close_timer (void)
    {
      T0CON = 0x07;		// Initialisation timer0 - Enable Timer0/16bits timer/
      TMR0IE = 0;           // Interdit les interruptions de TMR0
      GIEH = 0;             // Interdit toutes les interruptions
    }
    Routine d'interruption:
    Code:
      if(TMR0IF)                                                                    //Présence d'un interruption sur Timer0
        {
        TMR0H = 0xE1;
        TMR0L = 0x7C;
        flagIT= 1;
        TMR0IF = 0;                                                                 // Effacement du flag d'interruption
        }
    Et dans mon main
    [CODE]

    init_timer ();
    while (1)
    {
    (...)
    while (flagIT==0)
    {
    INHIBIT =! INHIBIT;
    }
    flagIT = 0;
    }

    [CODE]

    Pour informations, INHIBIT correspond à la broche RC3 de mon PIC, et je visualise un signal carré de fréquence 416.8 KHz ...
    Et ça ne change jamais...
    Savez vous d'où cela pourrait il venir??
    Merci d'avance

  8. #7
    jorg1n

    Re : [PIC]- Création timer 400ms

    J'ai modifié le main...
    Code:
    while (flagIT==0)
                              {
                              }
                      INHIBIT =! INHIBIT;
                      flagIT = 0;
    Et ça marche du tonnerre...
    Donc maintenant, je voudrais réaliser une petite fonction de temporisation de rétroéclairage avec ce timer,je voudrais fixer une valeur a une variable (entre 1 a 10 min) et une fois que j'appui sur une touche le rétroéclairage s'allume et s'éteindra qu'au bout du temps fixé (1 à 10 min)..tout en sachant que je dois réaliser d'autre fonction en meme temps (conversion AN,affichage,...)
    Auriez vous une petite idée sur le principe?
    Merci d'avance

  9. #8
    Gérard

    Re : [PIC]- Création timer 400ms

    Bonjour,
    Un truc me chiffonne : tu parles de TMR0H et TMR0L, je ne connais pas tous les PIC, mais dans la série 16, il me semble que TMR0 soit un compteur 8bit donc pas de H et L.

  10. #9
    invite3d298464

    Re : [PIC]- Création timer 400ms

    salut mer hulk
    j'ai pas compris comment vs calculez la période maximale .s'il te plait c qoui la formule utilisée?
    merci

  11. #10
    invite2d9e7c03

    Re : [PIC]- Création timer 400ms

    Salut
    Citation Envoyé par Gérard Voir le message
    Bonjour,
    Peut-être une solution ici :
    http://users.picbasic.org/projects/P...icTimerCal.htm
    Une application vraiment très utile pour les nuls comme moi
    MERCI pour le lien

Discussions similaires

  1. Timer PIC en mode compteur
    Par invite0106aa64 dans le forum Électronique
    Réponses: 4
    Dernier message: 06/11/2010, 06h01
  2. [PIC]-Interruption / Timer / Led
    Par jorg1n dans le forum Électronique
    Réponses: 4
    Dernier message: 24/04/2008, 14h55
  3. timer à base de pic
    Par spirou38 dans le forum Électronique
    Réponses: 1
    Dernier message: 31/07/2007, 21h31
  4. timer dans un pic
    Par invite1a90427b dans le forum Électronique
    Réponses: 2
    Dernier message: 21/03/2007, 20h00
  5. Pic : Petit Souci Avec Un Timer
    Par invite436dc8ee dans le forum Électronique
    Réponses: 0
    Dernier message: 16/05/2006, 18h57
Découvrez nos comparatifs produits sur l'informatique et les technologies.