Un petit clignotant à PIC pour débuter
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 37

Un petit clignotant à PIC pour débuter



  1. #1
    Poseidon88

    Un petit clignotant à PIC pour débuter


    ------

    Bonjour

    Après avoir lu un grand nombre de sujets sur les PIC je commence à vouloir fabriquer des petits montages pour m'amuser.

    J'ai passé des heures et des heures à lire les postes sur ce forum, surtout les messages de VEDE qui m'ont appris des trucks

    Bon, mon but est de faire clignoter une broche d'un PORT à 1Hz tout simplement.

    Mon premier programme a été fait avec des " delays " et çà c'est facile.

    Maintenant, j'ai un TIMER 16 bits et un quartz de 20MHz.

    En suivant des messages de VEDE, j'ai compris que :

    Prescaler = 8 donc 20MHz / 8 = 2.5MHz

    2.5MHz / ( 256*256 ) 38.14

    Donc si je comprends bien j'aurais 38 Overflows donc suffit de les compter.

    Mais que faire des 0.14 ?? Parce que cela ne sera pas précis ...

    Je devrais recharger mon TIMER avec une valeur forcément inférieur à 65536 mais comment la trouver ?

    J'espère que vous m'avez compris lol

    MERCI

    -----

  2. #2
    davidmoutt

    Re : Un petit clignotant à PIC pour débuter

    Salut

    Est ce que tu as était voir les cours de bigonnoff ?
    Tu programme en quel language.

  3. #3
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    Salut, oui j'ai été voir, mais moi je programme en C et lui c'est que de l'assembleur.

  4. #4
    davidmoutt

    Re : Un petit clignotant à PIC pour débuter

    Désolé je programme en assembleur, je ne peut pas t'aider.

    SALUT

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

    Re : Un petit clignotant à PIC pour débuter

    Pas grave merci quand même

  7. #6
    ftorama

    Re : Un petit clignotant à PIC pour débuter

    Pour être précis, le mieux est d'utiliser un quartz avec une fréquence qui soit un multiple de 2 comme un 16.384MHz. Même avec celui-ci ça ne tombe pas juste mais ça se rattrape plus facilement.

    Il existe la technique qui consiste à faire déborder le compteur que tu expliques, mais on peut également utiliser une fréquence plus faible et pré-positionner le compteur à une certaine valeur pour que l'overflow arrive pile à une seconde.

    En gros, il n'y a aucun intérêt à utiliser un quartz 20MHz là ou un 4MHz suffit, voire un 4.096MHz pour plus de précision
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  8. #7
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    Apparemment, si je fait 38 x 256² j'obtient 2490368 donc après je fais :

    2500000 - 2490368 et il me reste 9632 ( qui faut que je mette sous 16 bits nan ? )

    je sens que je vais y arriver ! lol

  9. #8
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    Salut FTORAMA : oui je sais ! LOL

    Mais là mon but c'est de le faire avec 20MHz histoire de comprendre pour de bon les timers, et en plus j'ai que des quartz à 20MHz sous la main.

  10. #9
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    Arf ! c'est bon ca me reviens !

    65536 - 9632 = 55904 !!

    Donc je recharge mon TIMER1 avec la valeur 55904

    Bon j'attends des réponses pour valider ca

  11. #10
    invite7a49d0d5

    Cool Re : Un petit clignotant à PIC pour débuter

    Salut,

    pour info le calcul des Timers n'a rien à voir avec le langage (C, asm...)...

    @ 20Mhz (FOsc), TCyc = 0.2µs

    donc le Timer s'incrémente toutes les 0.2µs ... avec Prescaler = 1...
    donc toutes les 1,6µs avec Prescaler = 8...

    on veut générer 1Hz soit 500 000µs (...)...
    500 000 / 1.6 = 312500

    donc faut que le Timer compte jusqu'à 312500...
    mé c'est timpossible... ;O]
    donc on va le faire compter 31250 MAIS 10 fois...
    en rajoutant une variable compteur dans l'interruption...

    comment calculer la valeur à mettre dans le Timer1 :
    65536 - 31250 = 34286
    TMR1H = 34286 DIV 256 = 133
    TMR1L = 34286 MOD 256 = 238 // MOD = reste de la division

    et voilà le "pseudo-code" (leds sur PortB) :
    Code:
    interrupt
    {
        TMR1H = 133
        TMR1L =  238
        compteur = compteur +1
        if compteur > 9 
        {
            PortB = not PortB   // inverse état leds
            compteur = 0
        }
        TMR1IF = 0 // efface le flag
    }
    main
    {
       TRISB = 0  // sorties leds
       // TODO : active le TIMER1 et son interruption
       while(1);  // le programme principal  (boucle infinie) qui ne fait rien
      // car tout est géré dans l'interruption
    }
    n'hésites pas si questions,
    vede
    ;O]
    ______________
    ...

  12. #11
    invite7a49d0d5

    Cool Re : Un petit clignotant à PIC pour débuter

    ps : et sans utiliser l'interruption :

    Code:
    main
    {
       TRISB = 0  // sorties leds
       // TODO : active le TIMER1
       while(1)
       {
        TMR1H = 133
        TMR1L = 238
        while (TMR1H);
        compteur = compteur + 1
        if compteur > 9 
        {
            PortB = not PortB   // inverse état leds
            compteur = 0
        }
      }
    }

  13. #12
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    Slt VEDE et Merci

    Donc tu as une autre méthode ^^ Enfin, est ce que la mienne était bonne ou pas ?

    Je vais suivre la tienne.

    Par contre, pour " TMR1L = 34286 MOD 256 = 238 // MOD = reste de la division " j'ai pas compris le calcule.

    Reste de la division c'est à dire ?

    34286 / 256 = 133.9296875

    Tu parles des 0.9296875 ?? Et comment tu obtient 238 ?

    Arf ! Je dois louper un truck tout bête LOL

  14. #13
    invite7a49d0d5

    Cool Re : Un petit clignotant à PIC pour débuter

    re ;O]

    toutes les méthodes sont "bonnes" ;O]
    si elles fonctionnent...

    pour trouver 238 (c'est le reste de la division) je fais :
    133 * 256 = 34048
    34286 - 34048 = 238

    ce qui revient à l'opération mathématique MODULO qui retourne le reste de la division:
    34286 MOD 256 = 238

    ps :

    ou sinon tu fais 0.9296875 * 256 = 238...

  15. #14
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    Et voilà ! En plus je fais le même raisonnement plus haut !

    Merci Demain je fait un programme avec ca et je test et bien évidement je donne des nouvelles

    Aussi, j'ai lus que entre la théorie et la pratique y'a des erreurs et qu'on pouvait modifier légèrement les valeurs du timer pour affiner.

    T'en penses quoi ?

  16. #15
    invite7a49d0d5

    Cool Re : Un petit clignotant à PIC pour débuter

    Citation Envoyé par Poseidon88 Voir le message
    (...)
    Aussi, j'ai lus que entre la théorie et la pratique y'a des erreurs et qu'on pouvait modifier légèrement les valeurs du timer pour affiner.

    T'en penses quoi ?
    re re ;O]

    j'en suis sur...
    testé et retesté...
    quelques soit le quartz (^2 ...)...

    déjà +10 cycles environs dû à la sauvegarde des registres si tu utilises les interruptions...
    cf ton code compilé, adresse 4 (interruptions)...

    dans un montage récent, j'ai du faire TMR1L théorique +21
    pour que cela "corresponde" à la fréquence affichée sur mon
    fréquencemétre (Fluke115)...

    et après ya les % d'erreurs du pic, du quartz...

    il faut un fréquencemètre pour pouvoir détecter le décalage rapidement..
    sinon faut attendre quelques jours... avec une montre...

  17. #16
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    Re

    OK donc demain bidouilles lol Je vais faire des mesures précises avec un oscillo numérique.

    Et une dernière question pour ce soir :

    - Le régistre T1CON .

    TMR1ON je met à 1
    TMR1CS je met à 0
    T1SYNC je met à 0
    T1OSCEN je met à 0
    Et " 1 1 " pour faire 8 sur T1CKS1 T1CKPS0

    C'est bon ?

  18. #17
    invite7a49d0d5

    Cool Re : Un petit clignotant à PIC pour débuter

    Citation Envoyé par Poseidon88 Voir le message
    (...)
    C'est bon ?
    re re re ;O]

    ça paraît...
    c'est quoi ton PIC?

  19. #18
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    C'est un 16F871.

    Je m'amuserais à faire plusieurs fréquences demain pour voir ce que je constate.

  20. #19
    invite7a49d0d5

    Cool Re : Un petit clignotant à PIC pour débuter

    Citation Envoyé par Poseidon88 Voir le message
    Re

    OK donc demain bidouilles lol Je vais faire des mesures précises avec un oscillo numérique.

    Et une dernière question pour ce soir :

    - Le régistre T1CON .

    TMR1ON je met à 1
    TMR1CS je met à 0
    T1SYNC je met à 0
    T1OSCEN je met à 0
    Et " 1 1 " pour faire 8 sur T1CKS1 T1CKPS0

    C'est bon ?
    c'est bon ;O]
    bonnes bidouilles ;O]
    et tiens nous au jus...

  21. #20
    Gérard

    Re : Un petit clignotant à PIC pour débuter

    Attention, il y a un bug avec TMR1, voir sur le site de Microchip.

    Sinon, un Qz de 32,768kHz en entrée de TMR1, rechargement de TMR1H avec b1100 0000 à chaque débordement et tu auras une fréquence de 1Hz.

  22. #21
    invite7a49d0d5

    Cool Re : Un petit clignotant à PIC pour débuter

    Hi Gerard,
    Citation Envoyé par Gérard Voir le message
    Attention, il y a un bug avec TMR1, voir sur le site de Microchip.(...)
    est-ce seulement quand on l'utilise en mode "asynchronous counter" ?
    (avec un quartz 32,768Khz en entrée)

    ___________
    ;O]

  23. #22
    Gérard

    Re : Un petit clignotant à PIC pour débuter

    Hi vede,
    Non, il me semble que c'est uniquement quand on recharge TMR1L et TMR1H.
    Bigo en parle dans le cours 2.

  24. #23
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    Hello

    Ce matin j'ai donc essayé de programmer le micro.

    Mais mplab m'indique des erreurs :

    J'ai écris T1CON = 0b11110001 et apparemment c'es faux.
    TMR1H et TMR1L ne sont pas reconnus...

    J'ai vu que pour rentrer des valeurs dans le régistre T1CON il fallait écrire SETUP...nan ?

    Moi j'ai débuté avec des ATMEL et pour ca y'avait une fenêtre WIZARD et là je découvre les PICs et y'a pas ça...
    Je suis complètement perdu...

  25. #24
    invitef84533aa

    Re : Un petit clignotant à PIC pour débuter

    bonjour
    je cherche une programmation "pic" qui convertie la température en couleurs c pour la camera thermique

  26. #25
    ftorama

    Re : Un petit clignotant à PIC pour débuter

    Citation Envoyé par rdm.2009 Voir le message
    bonjour
    je cherche une programmation "pic" qui convertie la température en couleurs c pour la camera thermique
    Commence par ouvrir ton propre sujet...là tu viens polluer celui de notre camarade
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  27. #26
    ftorama

    Re : Un petit clignotant à PIC pour débuter

    Citation Envoyé par Poseidon88 Voir le message
    Moi j'ai débuté avec des ATMEL et pour ca y'avait une fenêtre WIZARD et là je découvre les PICs et y'a pas ça...
    Je suis complètement perdu...
    Si j'ai un bon conseil à te donner, c'est de continuer sur AVR.

    pourquoi passer au PIC?
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  28. #27
    invite7a49d0d5

    Cool Re : Un petit clignotant à PIC pour débuter

    Hello ;O]

    envoyes TOUT ton code pour qu'on puisse t'aider...
    t'as du "oublier" de définir la cible (le modèle de PIC)...
    sinon orientes-toi vers un compilo "plus simple",
    intégrant un "WIZARD", par exemple MikroC...

    vede
    ;O]
    ————————
    ...

    ps : ou bien suis les bons conseils du camarade ftorama...

  29. #28
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    Re

    Bah disons que pour ce projet on m'impose d'utiliser MPlab et des PICs.
    Et comme je suis le seul à m'y mettre en ce moment...c'est moi qui découvre !

    Cet après midi j'ai enfin réussi à comprendre comment configurer certaines choses.Il m'a fallu du temps.
    Du coup j'ai pu faire un chenillard, faire clignoter des leds dans tous les sens etc.

    Demain je me remet sur le timer.

    Le model de PIC ? tu veux dire le " #include <16F871> " ?

    Il est mis tout en haut.

    D'ailleurs mes autres petits programmes fonctionnent.

  30. #29
    Gérard

    Re : Un petit clignotant à PIC pour débuter

    Es-tu passé par Bigonoff ?
    http://www.abcelectronique.com/bigonoff/

  31. #30
    Poseidon88

    Re : Un petit clignotant à PIC pour débuter

    Oui, mais comme c'est de l'assembleur je comprend rien

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Pour débuter...
    Par Sethrius dans le forum Matériel astronomique et photos d'amateurs
    Réponses: 7
    Dernier message: 29/06/2009, 15h33
  2. Quel materiel (pic & interface) pour débuter en programmation ?
    Par invite033bc09f dans le forum Électronique
    Réponses: 25
    Dernier message: 20/12/2008, 16h51
  3. ZigBee & PIC Comment débuter ?
    Par Shaiton dans le forum Électronique
    Réponses: 24
    Dernier message: 10/10/2008, 23h44
  4. aide pour montage clignotant urgent !!
    Par slider.17 dans le forum Électronique
    Réponses: 11
    Dernier message: 01/06/2008, 20h15
  5. Débuter en prog avec les PIC???
    Par invitee25bb931 dans le forum Électronique
    Réponses: 2
    Dernier message: 21/04/2008, 18h38
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...