Réalisation d'un chronomètre sur PIC18
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Réalisation d'un chronomètre sur PIC18



  1. #1
    Pilou81

    Réalisation d'un chronomètre sur PIC18


    ------

    Bonjour,

    Je souhaite lancer un chronomètre dans mon programme. Il faut donc que j'utilise les Timers de mon PIC18F4525. Le Timer 1 étant déjà utilisé pour une autre application il faut donc que je passe sur le 0 ou le 2. Le truc c'est que je les maitrise que très vaguement.
    Ce que je veux faire c'est:
    Lancer un TIMER puis l'arréter et voir combien il a compté en ms.
    Donc les 2 questions que je me pose c'est un rappel sur la conversion entre la valeur du TIMER et les ms?
    Et comment prendre en compte le débordement? On doit surement utilisé le flag de débordement? Pourriez-vous me donner un coup de main?

    -----

  2. #2
    invite87d208c9

    Re : Réalisation d'un chronomètre sur PIC18

    tiens, une tête connue ! j'espere que ce coup-ci ca va mieux marcher ...

    Alors, tes timers fonctionnent tous pareils :
    tu as la fréquence de ton PIC (admettons : Fosc = 4Mhz)
    les Timers fonctionnent à Fosc/4 (ici, 1Mhz)

    Les timers possède un "prescaler", c'est un diviseur de fréquence. Il peux etre réglé à 1:1, 1:2, 1:4 ... 1:256, ca depend du timer. Admettons, on prend un presacler 1:2. (La fréquence du timer sera donc 500khz)

    ca veut dire que toutes les 2us, ton Timer (qui n'est ni plus ni moins qu'un compteur) s'incrémente de 1. Quand je dis ton timer, ce sont des registre bien précis qui s'incrémente.

    Ils fonctionnent soit sur 8 bits (1 seul regitre, ne peux compter que jusqu'à 255, soit un temps de 510us pour notre exemple), soit sur 16bits (2 registres de 8 bits, un pour poids fort, un pour poids faire, et là on compte jusqu'à 65535, soit 131ms environ).

    Tu peux à tout moment remettre à zero un timer en venant écrire 0x00 dans le (les) registre(s) qui corresponde. Tu peux a toute moment savoir combien de temps s'est écoulé depuis la remise à zero, en faisant le calcul inverse.

    lorsque le timer "fait un tour" (passe de 255->0 en 8 bit, ou de 65535 à 0 en 16 bits), il monte un flag d'interruption (si bien sur il est configuré pour), ce qui te permet par exemple d'incrémenter une variable, pour compter le nombre de tour (par exmple, si tu veux 1.3 seconde , tu comptes 10 tours de notre timer).

    Mieux ! Si tu charge une valeur dans le registre : admettons pour un 8 bit, tu charges 200. Tu aura une interruption au bout de 55 'tic timer' (soit 110us dans l'exemple). Dans l'interruption, libre a toi de recharger les registresà 200. Ainsi tu aura toujours une interruption toutes les 110us.

    Facile !

    Selon les timers, ils n'ont pas les même possibilité de prescaler, sont forcément en 8 bits, etc... voir la doc pour plus de détail.

  3. #3
    invite87d208c9

    Re : Réalisation d'un chronomètre sur PIC18

    si ton TMR0 est libre, je te conseille de l'utiliser, c'est normalement celui qui est le plus ... libre (tous les prescaler, 8 ou 16 bits). Je sais pas a quelle fréquence tu travailles, mais débrouille toi pour que ton prescaler "tombe juste".
    si tu est à 4Mhz, Fosc/4 = 1Mhz, soit un tic toutes les 1us. en prescalant à 1:256, tu as un 'tic timer' toutes les 256us, soit 4 'tic' en 1,024ms, soit 4000 'tic' en 1 seconde, avec une erreur de 24ms ... trop dur...

    Du coup, pour avoir des seconde, tu prends tes registres, tu divise par 4000, et zou. En 16 bits avant mon exemple, tu aura un raz toutes les 16,8 secondes, mais rien ne t'empeche de crée un Xtended_Timer, une variable qui s'incrémente à chaque tour, et donc pour avoir le nombre de seconde, c'est

    (valeur_du_registre + 65535*XtendedTimer) / 4000

    voila voila ...

  4. #4
    Pilou81

    Re : Réalisation d'un chronomètre sur PIC18

    Demonight, c cool, ma boite va finir par t'embaucher...Ok les infos que tu me donnes je les connaissais déjà. après avoir fouiller sur le net g eu les réponses que je cherchait. La seul inquiétude que j'avai c t sur le comptage des débordement. Je compte utiliser le TIMER0 en 16bits, mon quartz est un 10Mhz, je comptait donc utiliser la formule t= (1/4*10.10^6)*Registre + (65535*nbr débordement). Le tout est de la formulé de manière à ce que le calcul puisse se faire en soft (multiplier par 10 à un endroit diviser par 10 a un autre...) et d'ailleur c'est 65535 que je dois compter pour le débordement ou 65536 car j'ai vu un peu de tout sur le net.....
    Jspr juste que cela va tourner car déjà que j'ai des problèmes avec mes autres interruptions (cf pb précèdent) alors en rajouter une, je dois être mazo...

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

    Re : Réalisation d'un chronomètre sur PIC18

    ok, lol, désolé mais comme tu m'avais dis que tu ne maitrisais pas trop les timers, j'ai préféré en mettre trop que pas assez ^^
    c'est 65536 que tu comptes (tu comptes jusqu'a 65535 ... +1 et ca passe à 0, et tu incrémente ton débordement. Au moment ou ton registre vaut 0, tu as bien 65536*1 + 0). J'ai tapé trop vite tt à l'heure

    Et puisque tu en parles, c'et quoi ta boite ? non parce que je suis en recherche de taf, alors ... ^^

  7. #6
    Pilou81

    Re : Réalisation d'un chronomètre sur PIC18

    ok, ma boite c'est un tout petit BE en thermique. Le truc c'est qu'on est que 3 et que l'on a peut de moyen, j'ai eu déjà bien du mal a me faire embauché pour après mon apprentissage donc pour un second élec ya peu de chance, bien joué quand même....

Discussions similaires

  1. [PIC16F877A] Réalisation d'un chronomètre - pb de précision
    Par scls19fr dans le forum Électronique
    Réponses: 26
    Dernier message: 10/05/2010, 19h19
  2. réalisation d'un radier sur hérisson
    Par inviteef06a2ce dans le forum Habitat bioclimatique, isolation et chauffage
    Réponses: 0
    Dernier message: 12/04/2010, 09h38
  3. [C/PIC18]-Mise en place d'un watchdog
    Par jorg1n dans le forum Électronique
    Réponses: 14
    Dernier message: 25/06/2009, 10h39
  4. Réponses: 10
    Dernier message: 15/05/2007, 11h27
  5. Réalisation d'un oscillo basique sur PC à partir d'un multimètre
    Par michel5002 dans le forum Électronique
    Réponses: 6
    Dernier message: 15/02/2007, 19h15
Découvrez nos comparatifs produits sur l'informatique et les technologies.