16f872 Timer0
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

16f872 Timer0



  1. #1
    invite42a371c9

    16f872 Timer0


    ------

    Amis du jour, bonjour.

    je programme un PIC16f872...
    je cherche a utiliser les timers interne ( le timer0 en particulier ).
    ca fait 4 heure que je lis le datasheet pour voir qu'elle bit mettre a 1 ou 0 dans le byte OPTION_REG ou INTCON mais rien y fait

    je voudrai faire un timer0 qui compte des flan montants sur un clock externe (pin RA4).

    Sinon, comment ca se passe? est-ce comme avec les interuptions? il faut faire un procédure dans la qu'elle le PIC va allé faire un tour et revenir quand il aura compté ses flans montant?

    merci pour votre aide
    a bientot

    je programme en Pascal ( car on me le demande )

    -----

  2. #2
    invite849f6457

    Re : 16f872 Timer0

    bonjour,
    je n'ai jamais utiliser de pic16f mais des pic18 il y a longtemp et je ne connais absolument pas le pascal (mais je connais un pascal, un ancien prof d'élec trés sympa), je vais essayer de t'aider quand méme.
    Donc cela a bien l'air d'étre sur RA4 pour le timer0 (tu sera limiter a 8bits)
    mais je ne comprend pas trés bien se que tu souhaite faire.
    pourquoi souhaite tu compter les fronts montant d'une clock externe? pour réaliser une HTR? car aucun intérré ici, ce timer ne peut pas réveiller le pic.
    Bref donc comment cela se passe, tu a un compteur (8bit sur RA4) qui s'incrément a chaque front montant,une fois que le timer déborde tu va avoir une interruption (si le temp que tu souhaite ne correspond pas exactement tu peut préremplir ton compteur).
    Aprés pour les configs pfff faut lire la doc tout est écrit ^^
    Pour OPTION_REG cela ne me dit rien mais la doc m'en a parler
    bit2-0 : Tu choisi une prédivision par "n" (c'est a dire que tu va incrémenter ton compter tout les "n" front montant)
    bit3 : tu le défini sur timer0
    bit4 : tu choisi front montant
    bit5 : tu choisi RA4 sinon sinon a sert a rien ^^
    Pour les bits 6et 7 je te laisse chercher (je vais pas tous faire ).
    Pour préremplir ton timer c'est TMR0 = "la valeur que tu souhaite".
    pour INTCON un petit coup de reverso du morceau de la doc qui en parle (T0IF et T0IE) est hop sa roule (enfin je pense).
    J'espére avoir été claire dans mes explication.


    cordialement
    charléne

  3. #3
    invite42a371c9

    Re : 16f872 Timer0

    salut et merci bcp
    Oui tu as plus ou moin dit tout ce que je savais=P
    enfin... ca confirme ce que je pensais
    Maintenant quand mon timer deborde de FF a 00, il fait une interruption.
    Il va comment dans la procedure d'interuption?
    Il y reste cmb de temps dedans? jusqu'au CLR du flag je suppose.

    et je cherche a faire ca car je dois apprendre a travailler avec les timer et interrupte alors ca m'occupe =P


  4. #4
    invite849f6457

    Re : 16f872 Timer0

    Maintenant quand mon timer deborde de FF a 00, il fait une interruption.
    tu a tester cela fonctionne?
    Il va comment dans la procedure d'interruption?
    comment ça il y va comment, si tu a bien fait ton programme (autorisé les interruption) quand ton timer déborde, le programme principal se mets en "pause", on éxécute ton interruption et on revient au programme principal (au méme endroit ou il c'est arréter).
    Il y reste cmb de temps dedans? jusqu'au CLR du flag je suppose.
    le temp nécessaire a faire les instruction qui y figure ( le moin possible)

    J'aimerais voir le code et si cela fonctionne.

    cordialement charléne

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

    Re : 16f872 Timer0

    Salut,

    Dans mon projet de BTS de fin d'année, j'ai justement réalisé un compteur d'impulsion avec le timer 0.

    J'avais 2 capteurs.
    Le timer 0 générais un signal carré d'une seconde à 1 et une seconde à 0.
    Durant le " 1" une variable s'incrémentait avec les impulsions du premier capteur, durant le "0" c'est une deuxième variable qui s'incrémentait avec les impulsions du deuxième capteur.

    Je peux t'envoyer mon programme si tu veux.
    C'était un PIC16F870.

    J'ai l'habitude de programmer des ATMEL mais là on m'a obligé d'utiliser un PIC et je n'y connaissais rien du tout mais en cherchant ( 1 semaine de boulot ! ) j'ai réussi tout seul comme un grand.

  7. #6
    RISC

    Re : 16f872 Timer0

    Salut,

    Je te recommande de lire les tutoriels pour les PIC16 sur ce site (il sont en C mais c'est je pense transposable en pascal).

    Il y a aussi des exemples ici.

    Un compilateur PASCAL gratuit pour les PIC16 ici : http://pascal.developpez.com/compilateurs/pmp/

    a+

  8. #7
    invite42a371c9

    Re : 16f872 Timer0

    re bonjour a tous!

    j'ai trouver! ^^ enfaite ce qui me derangait, c'etait que le timer compter en suivant le code comme d'habitude jusqu'au débordement du TMR0. ( al base il est utile pour ca...) mais je voulais qu'il ne fasse rien pendant ce temps de comptage! du coup il fallait simplement scruter le flag et tant qu'il n'etait pas a "1" le programme ne fait rien =) voila merci a tous ^^
    ( ca me gonfle d'avoir chercher pendant 2 jours pour ca xD )
    merci a vous +

Discussions similaires

  1. Timer PIC 16f872
    Par invite42a371c9 dans le forum Électronique
    Réponses: 1
    Dernier message: 17/01/2011, 13h17
  2. timer0 pic18f4550
    Par titoff dans le forum Électronique
    Réponses: 20
    Dernier message: 26/08/2009, 21h47
  3. Timer0
    Par invite8dac0c00 dans le forum Électronique
    Réponses: 6
    Dernier message: 08/06/2009, 18h16
  4. Timer1 et timer0
    Par guifou dans le forum Électronique
    Réponses: 4
    Dernier message: 18/01/2009, 05h16
  5. 4 secondes Timer0
    Par bimo dans le forum Électronique
    Réponses: 8
    Dernier message: 29/06/2006, 14h53
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...