Calcul d'une tempo sur PIC16F84
Répondre à la discussion
Affichage des résultats 1 à 10 sur 10

Calcul d'une tempo sur PIC16F84



  1. #1
    invite82a3ae66

    Calcul d'une tempo sur PIC16F84


    ------

    Bonjour à tous et à toutes.Débutant dans l'univers des pics et souhaitant apprendre leurs programmation je me suis lancé dans les cours de Monsieur Bigonoff avec le Pic16f84 .Je suis le cours assidument et la je me heurte dans le chapitre tempo à son calcul je bataille depuis hier je né toujours pas compris.Voila je vous explique je suis à la page 106 du cours et voici le sous programme
    ;***************************** ****************************** **********
    ; SOUS-ROUTINE DE TEMPORISATION *
    ;***************************** ****************************** **********
    ;---------------------------------------------------------------------
    ; Cette sous-routine introduit un retard de 500.000 μs.
    ; Elle ne reçoit aucun paramètre et n'en retourne aucun
    ;---------------------------------------------------------------------
    tempo
    movlw 2 ; pour 2 boucles
    movwf cmpt3 ; initialiser compteur3
    boucle3
    clrf cmpt2 ; effacer compteur2
    boucle2
    clrf cmpt1 ; effacer compteur1
    boucle1
    nop ; perdre 1 cycle *256 *256 *2
    decfsz cmpt1 , f ; décrémenter compteur1
    goto boucle1 ; si pas 0, boucler
    decfsz cmpt2 , f ; si 0, décrémenter compteur 2
    goto boucle2 ; si cmpt2 pas 0, recommencer boucle1
    decfsz cmpt3 , f ; si 0, décrémenter compteur 3
    goto boucle3 ; si cmpt3 pas 0, recommencer boucle2
    return ; retour de la sous-routine

    si je suis son exemple avec 1 boucle de la page 105 et que j'exerce le meme mode opératoire avec la sous routine de temporisation qui est au dessus je suis loin des 500.000 micro secondes .On introduit un retard de 500.000 micro seconde ce qui equivaut à 500.000cycles puisqu'on tourne avec un quartz de 4MHZ;Je m'evertue a essayer de comprendre mais mon mode opératoire né pas le bon puisque je ne tombe pas avec les 500.000 micro secondes.C la raison pour laquelle je fais appel à vous messieurs les spécialistes pour m'éclairer sur ce problème et m'apporter une explication;Merci de votre aimable dévouement

    -----

  2. #2
    invite82a3ae66

    Re : Calcul d'une tempo sur PIC16F84

    Ya personne pour m'aider?

  3. #3
    Gérard

    Re : Calcul d'une tempo sur PIC16F84

    Citation Envoyé par kamedine Voir le message
    Ya personne pour m'aider?
    Un peu de patience !

    Si Bigo dit 500 000, c'est 500 000.
    Es-tu sûr du Qz de 4MHz dans son exemple ?
    Programme un PIC et regarde ce que çà donne.

  4. #4
    invite36492e34

    Re : Calcul d'une tempo sur PIC16F84

    salut,

    petite explication:
    Code:
    boucle1
    	nop ; perdre 1 cycle *256 *256 *2
    	decfsz cmpt1 , f ; décrémenter compteur1
    	goto boucle1 ; si pas 0, boucler
    temps de la boucle1 = (1+3)*(255-cmp1) + 3=1023cycles
    Code:
    boucle2
    	clrf cmpt1 ; effacer compteur1
    boucle1
    	nop ; perdre 1 cycle *256 *256 *2
    	decfsz cmpt1 , f ; décrémenter compteur1
    	goto boucle1 ; si pas 0, boucler
    	decfsz cmpt2 , f ; si 0, décrémenter compteur 2
    	goto boucle2 ; si cmpt2 pas 0, recommencer boucle1
    temps de la boucle2 = (1+boucle1+3)*(255-cmp2)+(1+boucle1+2)
    boucle2 = 262911cycles
    je te laisse calculer le temps de cycle pour la boucle3 !
    temps de la routine : 525831cycles

    A+

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

    Re : Calcul d'une tempo sur PIC16F84

    Bonsoir Gérard et merci de ton aide .Pour faire echo à ta question je te répond oui c un quartz de 4MHZ cela fait référence au tout premier montage qui figure sur le cours à la page 88 led clignotante .
    Si je suis son mode opératoire pour une boucle ex:
    tempo
    clrf cmpt1 ;1 cycle
    boucle1
    decfz cmpt1,f ;1 cycle si on ne saute pas et 2 si on saute
    goto boucle1
    return

    donc cela fait
    2 cycles pour l'appel de la sous routine
    1 cycle pour le reset de la variable cmpt1
    257 cycles pour les 256 incrémentations
    510cycles pour les 255 goto
    2cycles pour le return
    total 772 cycles jusque la sa va mais dés que g voulu m'exercer sur la sous routine de la page 106 avec 3 boucles je ni arrive pas

  7. #6
    invite82a3ae66

    Re : Calcul d'une tempo sur PIC16F84

    Bonsoir SCHMO et un grand merci de ton aide mais il se trouve que je né pas trouvé pour la boucle 3 je cherche toujours à l'heure ou j'ecris et je t'avoue que je suis à la rue completement largué .Bref je vais encore me pencher dessus

  8. #7
    Gérard

    Re : Calcul d'une tempo sur PIC16F84

    Tu programmes le truc et tu regardes ta montre.
    Tu verras bien si c'est 1/2 s ou pas.

  9. #8
    invite82a3ae66

    Re : Calcul d'une tempo sur PIC16F84

    je suis en phase apprentissage donc par conséquent je suis pas arrivé au stade de créer ma propre application et de ce fait me calculer les tempos qui y seront insérés .Je débute la programmation des pics avec les cours de Bigonoff et actuellement j'essaye de comprendre le calcul de la tempo .Lorsque je voudrais inserer une sous routine de 3 seconde que je sache le faire c normal sinon je programme mon pic tout azimuth et je cherche pas à savoir comment il fonctionne .Je ne suis pas comme sa j'apprend je découvre et lorsque je bute sur un problème que je n'arrive pas à assimiler je fais appel a votre savoir toi ou un autre .Qui à t'il de mal a sa?

  10. #9
    invite36492e34

    Re : Calcul d'une tempo sur PIC16F84

    salut,

    Explication plus détaillée:
    Code:
    boucle2
                clrf  cmpt1              1cycle
    boucle1
                nop                         1cycle
                decfsz cmpt1,f      :        
                goto  boucle1        :-> 3cycles si cmpt1<>0 sinon 2cycles
                decfsz cmpt2,f      :
                goto  boucle2        :-> 3cycles si cmpt2<>0 sinon 2cycles
    Le temps de boucle1 est de:
    1 (nop) + 1(decfsz)+2(goto) + 1(nop) + 1(decfsz)+2(goto)+.....

    au départ cmpt1=0 donc:
    temps boucle1 = (1+1+2)*255 + (1+2)-> temps quand cmpt1=0
    = 4*255+3=1023cycles

    Pour la boucle2, on a : 1(clrf)+boucle1+3(decfsz+goto) + 1(clrf)+boucle1+3 + ...

    au depart compt2=0 donc:
    boucle2 = (1+boucle1+3)*255 + (1+boucle1+2)
    =1027*255 + 1026 = 262911cycles

    De même pour la boucle3. Ce qui donne:
    1(clrf)+boucle2+3 + 1(clrf) + boucle2 + 2 -> car cmpt3=0

    Donc:
    boucle3 = (1+boucle2+3) + (1+boucle2+2) = 262915 + 262914= 525829cycles

    Pour le temps totale de la routine tempo:
    2 (call) + 1(movlw) + 1(movwf) + boucle3 + 2(return)
    = 525835cycles

  11. #10
    invite82a3ae66

    Re : Calcul d'une tempo sur PIC16F84

    Bonjour Shmo et je tiens à te remercier pour ton aide ainsi que ton explication.Il c avéré que hier soir en me penchant une nouvelle fois sur le problème de la boucle 3 g fini par trouver le résultat mais j'étais loin de la procédure que tu m'explique.Maintenant c chose faite grace à toi et j vois un peu plus clair maintenant .Je vais m'exercer encore en rajoutant des boucles ou regarder des programmes et me calculer le nombre de cycle cela me permettra de mieux cerner la temporisation sur un PIC.Encore merci Shmo de ta patience bon journée et bon week end

Discussions similaires

  1. représentation d'une tempo avec flowcode ?
    Par sg1 dans le forum Électronique
    Réponses: 11
    Dernier message: 03/10/2009, 19h37
  2. PIC16F84 sur altium
    Par invite79905966 dans le forum Électronique
    Réponses: 0
    Dernier message: 28/04/2009, 16h05
  3. Calcul tempo
    Par invitec1317d72 dans le forum Électronique
    Réponses: 5
    Dernier message: 26/05/2008, 14h34
  4. exercices sur le pic16f84
    Par invitea821b3a8 dans le forum Électronique
    Réponses: 1
    Dernier message: 17/10/2006, 20h30
  5. tempo sur fronts
    Par LTHOMAS dans le forum Électronique
    Réponses: 4
    Dernier message: 21/07/2006, 22h20
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...