Signal horloge avec 16F627
Répondre à la discussion
Affichage des résultats 1 à 18 sur 18

Signal horloge avec 16F627



  1. #1
    invite164b8116

    Signal horloge avec 16F627


    ------

    Bonjour,

    Voilà j'aimerais bien réaliser un signal d'horloge avec le 16F627, la fréquence sdoit être de 200 Hz. Mais le problème c'est que je ne sais pas trop comment le réaliser. Je pensais utiliser le Timer0 mais apparement il compte à chaque cycle (donc lier à la fréquence du pic) et l'interruption ne se fait que lorsque la valeur du registre passe de FFh à 00h
    Et puis on ne peut pas y adjoindre une valeur de préchargement...
    Sinon il y a bien l'option du compteur avec posibilité de préchargement mais ne fait j'ai oublier d'écouter cette partie de cours de programmation lorsque j'étais en cours . Donc je serais tout ouï si quelqu'un peut m'aiguillier sur la façon dont l'on peut choisir finement cette valeur. Car sur la doc du pic ils disent que c'est un ration de 1/2 ; 1/4 jusqu'à 1/256, mais c'est par rapport à quoi ????


    Je vous remerci d'avance pour votre aide

    -----

  2. #2
    Gérard

    Re : Signal horloge avec 16F627

    Que doit faire cette horloge ?
    Sortir sur une broche du PIC ?
    Faire des calculs internes ?
    Il me semble que le 627 possède un Timer1 qui compte sur 16 bit et qui est rechargeable.
    Prends un quartz de 3,2768MHz, branche le Timer1 sur l'oscillateur interne (freq. Qz/4) et tu pourras générer une interruption toutes les 5ms et tu auras tes 200Hz.
    Je te laisse chercher la valeur à mettre dans le prédiviseur et avec quelle valeur il faut recharger TMR1H.
    N'oublies pas de me dire ce que tu trouveras.

    Question à 2 sous : pourquoi cette fréquence pour le Qz ?

  3. #3
    invite164b8116

    Re : Signal horloge avec 16F627

    je te remercie beaucoup Gérard pour ta réponse. En fait j'ai besoin de cette fréquence afin de pouvoir faire une salve de signal carré de 40KHz et qui dure 5ms (c'est pour un petit projet de radar ultrasons).
    Par contre je t'avouerais que là, je n'ai aucune idée de la valeur à mettre dans le prédiviseur, mais je cherché demain (enfin cet après midi ).
    Je te tiendrais au courant. Et puis je pense que lorsque j'aurais un peu plus avancer mon projet je ferais quelques petit mots sur mon blog. Et pourquoi pas dans la partie projet...même si c'est rien à comparer des autres projets actuel mdr.

  4. #4
    invite164b8116

    Re : Signal horloge avec 16F627

    le préchargement on ne peut l'utiliser qu'en mode compteur avec une horloge externe na? enfin c'est ce que j'ai pu comprendre. Mais pour le préchargement j'ai toujours pas compris comment ça marcher. C'est Fosc/4 que l'on redivise par 4 (par exemple) pour déterminer à partir de combien il commence à compter?

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

    Re : Signal horloge avec 16F627

    Regarde la page 49 du datasheet, c'est assez clair.
    Si on utilise l'oscillateur interne (F Qz / 4) suivant le bit TMR1CS (clock source), le prescaler permet une division supplémentaire par 1, 2, 4 ou 8 suivant les bits 0 et 1 de T1CKPS (il n'est pas obligatoire de l'utiliser).
    On arrive ensuite à une porte AND qui permet de stopper ou de faire compter le compteur en fonction du bit TMR1ON.
    Enfin on arrive aux registres qui comptent les impulsions TMR1L et TMR1H.
    Le flag d'interruption sera activé lors du débordement (passage de FFFF à 0).
    ATTENTION, ce bit doit être mis à 0 manuellement dans la routine d'interruption.
    TMR1 peut compter jusqu'à 65535 (FFFF), si tu mets par exemple 128 (80h ou 1000 0000b) dans TMR1H, le compteur COMMENCERA à compter à cette valeur et débordera à FFFF. Il aura au final compté beaucoup moins d'impulsions. En fait, il aura compté 32768 (8000h)
    impulsions.
    Conclusion, suivant ton rechargement de TMR1 dans la routine d'interruption, l'interruption surviendra +/- tôt.
    J'espère que mes explications sont claires.

  7. #6
    invite164b8116

    Re : Signal horloge avec 16F627

    hummm..vi mais (une dernière question promis ) comment lier le nombre d'impulsions qu'il va compter avec la fréquence que je veux ?
    Ensuite j'essaierais de voir pour la partie programmation, dommage que j'ai perdu mes vieux cours sur le C...je vais tenter de refaire de tête avec l'aide de la doc pour les bit et registre...

  8. #7
    Gérard

    Re : Signal horloge avec 16F627

    Qz : 3,2768MHz (c'est un multiple de 2)
    On prend FQz / 4 = 819 200Hz
    Prédiv = 1
    Pour avoir une IRQ toutes les 5ms (200Hz), il faut diviser par 4096.
    (pour obtenir 4096 : 819200/200)
    4096 = 1000h --> recharger TMR1H avec 10h

    Dans la routine d'IRQ il faut :
    remettre le flag d'IRQ TMR1 à 0
    recharger TMR1H

    C'est bon ?

  9. #8
    Gérard

    Re : Signal horloge avec 16F627

    Le routine d'IRQ devra de préférence être écrite en asm.

    Ce que je t'ai expliqué est pour avoir une IRQ toutes les 5ms.

  10. #9
    invite164b8116

    Re : Signal horloge avec 16F627

    alors j'ai compris l'histoire du 4096, mais pourquoi recharger TMR1H à 10h et non pas à 1000h ? puisque 1000h correspond à 4096.
    Ensuite tu dis que la routine d'IRQ devra être écrite en asm mais par contre je n'ai jamais étudier l'asm, juste le C en cours :'(

  11. #10
    Gérard

    Re : Signal horloge avec 16F627

    Citation Envoyé par tarentulemrjack Voir le message
    alors j'ai compris l'histoire du 4096, mais pourquoi recharger TMR1H à 10h et non pas à 1000h ? puisque 1000h correspond à 4096.
    Ensuite tu dis que la routine d'IRQ devra être écrite en asm mais par contre je n'ai jamais étudier l'asm, juste le C en cours :'(
    TMR1 est composé de 2 registres 8 bit qui forment ensemble un registre de 16 bit.
    4096 = 1000h mais pour les 2 registres, càd 00h pour TMR1L et 10h pour TMR1H
    Facile non ?

    Comme on ne sait pas exactement comment travaille le compilateur et quels registres de la RAM il utilise et comme une IRQ peut survenir n'importe quand, il vaut mieux écrire la routine d'IRQ en asm avec ses propres variables.

  12. #11
    invite164b8116

    Re : Signal horloge avec 16F627

    okiiiiiiiiiiiiiiiiiiiiiiiiiii, j'ai compris pour TMR1. Je te remerci pour tes explications. Je comprend déjà mieux comment ça marche . Ensuite pour l'assembleur ca risque d'être beaucoup plus tendu car je ne sais pas du tout comment ça marche... Donc je vais essayer de trouver des exemples sur google.
    Encore merci pour ton aide précieuse et je te tiendrai au courant

  13. #12
    Gérard

    Re : Signal horloge avec 16F627

    http://www.abcelectronique.com/bigonoff/
    Télécharge le cours n°1, tu en apprendras long sur le 16F84 (pas que lui d'ailleurs) et l'assembleur.

  14. #13
    RISC

    Re : Signal horloge avec 16F627

    Citation Envoyé par tarentulemrjack Voir le message
    . Ensuite pour l'assembleur ca risque d'être beaucoup plus tendu car je ne sais pas du tout comment ça marche... Donc je vais essayer de trouver des exemples sur google.
    Regardes dans les notes d'applications. Il y a beaucoup d'exemples qui peuvent t'aider :
    http://www.microchip.com/stellent/id...GE&nodeId=2048

    Une version gratuite du compilateur C de Hitech mais limitée valide pour le 16F627 :
    http://www.htsoft.com/products/PICClite.php

  15. #14
    invite164b8116

    Re : Signal horloge avec 16F627

    je te remercie RISC pour tes liens

  16. #15
    invite164b8116

    Re : Signal horloge avec 16F627

    Hummm bon changement de programme....Je revois ma gestion du projet depuis le début.
    Mon projet étant un petit radar à ultrasons, j'ai ma fréquence de 40KHz, je viens de réfléchir pour faire la salve, et finalement c'est plus un signal avec 1/3 à l'état haut. Donc je vais utiliser le module CCP du pic pour le générer. Je vais utiliser une fréquence de 1,22 KHz qui me laisseras 10 états haut venant de l'astable. j'amplifie le tout et j'envoie.
    Pour la partie réception, j'amplifie mon signal reçu, je le mets en forme pour avoir un signal carré correspondant (je pensais à un comparateur mais comment gérer les changements d'états de la salve?). Et c'est là que ma plus grande question arrive...Pour mesurer la distance il me faut l'instant de départ de la salve et le comparer au moment où j'ai le retour. Mais je vois pas comment comparer les 2 signaux.... Pouvez vous m'aider svp?

  17. #16
    Gérard

    Re : Signal horloge avec 16F627

    Qui t'empêche d'émettre en continu ?
    Tu lances un compteur dès le début de l'émission, tu arrêtes le compteur dès réception.

    Attention à la température, les US ne se propagent pas de la même façon s'il fait froid ou chaud.

  18. #17
    invite164b8116

    Re : Signal horloge avec 16F627

    qu'appele tu froid, chaud ?
    Ensuite pour la mise en forme du signal de reception, pense tu que c'est une mauvaise idée le comparateur ?
    (je me demande vraiment ce que j'ai foutu pendant mes années d'étude...)
    merci de ta réponse Gérard

  19. #18
    Gérard

    Re : Signal horloge avec 16F627

    http://umps.med.univ-tours.fr/coursUS.html
    Voir ci-dessus, il y est question de la propagation des US.

Discussions similaires

  1. Faire une horloge avec un PIC
    Par invitef1e74cb6 dans le forum Électronique
    Réponses: 27
    Dernier message: 29/04/2011, 22h18
  2. Comment brancher deux CI 4010 avec une horloge
    Par inviteffed58af dans le forum Électronique
    Réponses: 6
    Dernier message: 12/06/2006, 20h42
  3. Horloge avec un PIC16F84
    Par invite0106aa64 dans le forum Électronique
    Réponses: 6
    Dernier message: 15/05/2006, 16h28
  4. Horloge avec PIC 16F84
    Par invitee45b5732 dans le forum Électronique
    Réponses: 16
    Dernier message: 13/04/2006, 23h32
  5. Horloge lumineuse, horloge mecanique et Einstein
    Par pidofra dans le forum Physique
    Réponses: 6
    Dernier message: 22/03/2006, 15h21
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...