PIC 16F84 et prediviseur jusqu'à 50 Mhz
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 34

PIC 16F84 et prediviseur jusqu'à 50 Mhz



  1. #1
    schneiderj

    PIC 16F84 et prediviseur jusqu'à 50 Mhz


    ------

    Bonjour,

    je suis en train d'essayer et de comprendre le programme développé par Loïc Lefebvre.

    Et il y a un point que je ne comprends pas : l'utilisation du prediviseur pour pouvoir "travailler" jusqu'à 50 MHz...
    J'avais compris jusqu'ici que ce prédiviseur permet de modifier les bases de temps soit du TIMER0 soit du WATCHDOG et avoir ainsi pour le timer0 un overflow qui va de 512 à 65536 µs avec un quartz à 4 MHz.

    Mais là... je coince et en plus je n'arrive pas à mettre la main sur la note de Michrochip dont parle Loïc.

    Si vous pouviez m'éclairer un peu ?

    Merci
    Jean-Marie

    -----

  2. #2
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Salut,

    Pour le 16F84, la fréquence maximum pour RA4 est de 50nS soit 20MHz, en mode prédiviseur...

    Donc, impossible de mesurer une fréquence de 50MHz avec le 16F84.

    Par contre, si le programme n'utilise pas le prédiviseur du Timer, on passe à 20nS.

    David.

  3. #3
    invite3a1051d7

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    bonjour,
    je pensais que si l'on comptait le nombre d'impulsion sur une entrée
    entre chaque impulsion le temps minimum était lié à la fréquence du quartz (f/4).
    mais apparemment on peux compter plus vite ?

    cordialement
    Alain

  4. #4
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Salut,

    Non, la fréquence en entrée du timer n'est pas liée au TCY, mais bien en fonction des limites du Timer0.

    Regarde la "TABLE 9-5- TIMER0 CLOCK REQUIREMENTS" du datasheet 16F84 DS35007B-page 60.

    Par contre avec le prédiviseur, on est limité à Fosc car la rafraîchissement du prédiviseur est lié à Fosc.

    David.

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

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    bonjour,
    sur RA4 on peut donc compter des impulsions rapides ?

    cordialement
    Alain

  7. #6
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Oui, mais dans les limites du timer...

    Attention, car je me suis trompé en lisant le datasheet trop rapidement, c'est en mode prédiviseur que le comptage à la plus haute fréquence de lecture et non l'inverse!!!

    David.

  8. #7
    schneiderj

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Merci pur ces réponses. Suites à celles-ci j'avance un peu, mais d'un pas et recule de 2.

    Nous avons donc :

    Param No. | Sym | Characteristic | Min | Typ† | Max | Units
    2 | TCY | Instruction Cycle Time(1) | 0.2 | 4/FOSC | DC | µs


    Ce qui fait que TCY vaut au minimum 200 nS.

    TABLE 9-5:
    Tt0P = T0CKI Period = (TCY + 40)/N en nS

    N = prescale value (2, 4, ..., 256)


    Soit Tt0P = 1 ns au minimum environs. Mais qu'est ce que je peux faire avec cela ?

    Jean-Marie

  9. #8
    invite3a1051d7

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    bonjour,
    j'imagine que l'on peux compter avec une fréquence élevée ,
    c'est vrai qu'un petit exemple expliqué serait le bien venu!
    car je vois pas comment faire ?
    cordialement
    Alain

  10. #9
    schneiderj

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Oui, parceque utiliser TMR0 avec cette fréquence et un prescaler égale à 128 ou 256, nous allons compter, mais comment raccorder cette valeur au temps ?

    Utiliser le watchdog ?

    Jean-Marie

  11. #10
    schneiderj

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Je viens de trouver la note d'application dont je vous parlais : http://ww1.microchip.com/downloads/e...Doc/33023a.pdf.

    Rien à voir avec le 16F84, ce qui explique le fait que je ne la trouvais pas. Il fallait chercher beaucoup plus large. Enfin je pense que c'est celle-ci (voir page 174).

    Jean-Marie

  12. #11
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Salut,

    Bon, je vais tenter d'être plus clair, afin d'éviter les confusions que j'ai placées dans ce fil...

    On reprend toujours la "TABLE 9-5- TIMER0 CLOCK REQUIREMENTS" du datasheet 16F84 DS35007B-page 60. :

    D'abord, je viens de comparer avec un18F car le Ttop n'est pas très clair sur le datasheet du 16F84 (enfin si, une fois comparé à un autre datasheet)

    Pour commencer, avec un 16F84 la fréquence maximale possible à mesurer est une période de 240nS.
    Première erreur de ma part, impossible de compter plus vite que le TCY sur un 16F84 au contraire de beaucoup d’autres 16F qui sont capables de mesurer des périodes de 20ns(10nS de front haut et 10ns de front bas avec le même TCY)...

    En mode prédiviseur, c'est exactement la même période à savoir (avec un quartz de 20MHz pour l'horloge système) 240nS mais l'incrémentation du compteur se fait simplement sur base du prédiviseur Timer0, soit une incrémentation toutes les 2, 4, 8, 16,... périodes.

    Ensuite, il est précisé au paramètre 40 que le front haut doit faire minimum 30nS en mode prédiviseur et 120nS sans le prédiviseur(toujours avec un quartz de 20MHz pour l'horloge système)

    Au paramètre 41, on précise que le temps du front bas doit faire minimum 20nS en mode prédiviseur et 120nS sans le prédiviseur.

    Au première abord, on pourrait donc penser à tord (comme je l'ai fait) qu'à l'analyse de ces chiffres :

    La période la courte capable d'être prise en compte par le µC serait une période de 30nS + 20nS soit 50nS MAIS...

    C'est oublier notre paramètre 42 qui nous dit que la période minimal est de TCY + 40 nS soit 240ns minimums.
    Dit autrement, le front haut peut très bien faire 30nS, mais le front bas devra faire 210nS pour respecter le datasheet, le paramètre 42 ne pouvant être ignoré...

    Au final, avec un 16F84 et en respectant le datasheet il est même impossible de compter à la vitesse TCY vu qu'il y a un temps de 20ns au front haut et bas à ajouter au TCY pour la période minimal prise en compte par le µC.

    Cela signifie aussi, qu'en respectant le datasheet il est carrément impossible de mesurer une fréquence de 50MHz en entrée directe du µC la période la plus faible étant de 240nS.

    Maintenant, si on change de PIC et que l'on utilise par exemple un 16F628A on se retrouve avec une période Ttop de 20ns pour un TCY de 200nS ce qui signifie qu'il est possible de compter des périodes 10X plus rapide que le temps de cycle du µC....

    Bon, j'espère avoir été un peu plus clair et surtout avoir donné les infos précises vu que j'avais supposé que le 16F84 avait un timer0 standard à la série 16F; ce qui n'est pas le cas!
    J'ajoute au vu de ces explications qu'il faut ignorer mes posts qui précèdent vu qu'ils sont inexacts pour le 16F84

    David.

  13. #12
    schneiderj

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Merci David pour cette longue réponse.

    Mais il reste que quelque système à base de 16+F84 compte jusqu'à 50 MHz, dont le lien donné en début de message plus par exemple celui-ci (http://paulfjujo.free.fr/FREQ/frequence84.htm) qui reprend le travail d'un certain Peter Cousens. Et j'ai l'impression que c'est cette dernière personne qui est à l'origine de tout ce travail.

    Je ne dit pas que la règle des nombre donne la vérité, mais je serai surpris que plusieurs personnes reprennent une idée de base si elle n'est pas correcte.

    Il y a donc encore quelque chose qui me "chipote"...

    Jean-Marie

  14. #13
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Je suis désolé, avec un 16F84 en respectant le datasheet, la période maximale mesurable est de 240nS, donc impossible de mesurer 50MHz...

    Si tu ignores le datasheet, peut être que cela fonctionne, peut être que cela ne fonctionne pas, car on est hors spécifications du µC.

    La solution est de remplacer le 16F84 par un 16F628A qui admet une période de 20nS dans ses spécifications.

    David.

  15. #14
    invite3a1051d7

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    bonjour,
    DavidDb peux tu nous proposer une demarche (type organigramme..)pour realiser un compteur d'impulsion rapide ?
    cordialement
    Alain

  16. #15
    schneiderj

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    A la lecture du schéma joint, je comprend que c'est la sortie avec prescaler qui va être échantillonné et donc avec un signal de 20 nano secondes, il y aura en sortie 20*256 (au maximum) 5.12 µsecondes pour la totalité d'un pulse donc 2.56 pour la moitié, ce qui fait que nous devrions pouvoir synchroniser avec l'horloge interne.

    Est-ce correcte ?
    Jean-Marie
    Images attachées Images attachées  

  17. #16
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    L'unique solution pour mesurer une période plus rapide que 240nS est d'ajouter un diviseur de fréquence en entrée du µC toujours pour respecter les 240nS imposée par le datasheet, le reste n'est que spéculations et donc pas certain que cela fonctionne correctement.

    Mesurer une période de 40nS en entrée direct du 16F84 reste toujours impossible si on respecte le datasheet.

    Pour Alainav1, oui mais uniquement pour un 16F628 vu que le 16F84 n'accepte pas plus rapide que son TCY+40ns...

    - toutes les 10µSec :
    -> copier valeur timer0 dans varaibles temporaire
    -> reset Timer0

    - calcul de la période = 10µSec divisée par le contenu de la varaible temporaire.

    Maintenant pour le calcul de la période, il est probablement plus simple d'utiliser une multiplication en rempaçant les 10µSec par un constante adaptée.

    Les 10µSec ne sont qu'un exemple, en fonction de la fréquence à mesurer et du débordement du timer0, il faut adapter la fréquence de lecture du timer0.

    David.

  18. #17
    schneiderj

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Citation Envoyé par DavidDB Voir le message
    L'unique solution pour mesurer une période plus rapide que 240nS est d'ajouter un diviseur de fréquence en entrée du µC toujours pour respecter les 240nS imposée par le datasheet, le reste n'est que spéculations et donc pas certain que cela fonctionne correctement.
    David, ce n'est pas ce que j'ai dit plus haut ? Si ce n'est pas le cas merci de me le dire, car dans ce cas je suis sur la mauvaise route .

    Citation Envoyé par DavidDB Voir le message
    Les 10µSec ne sont qu'un exemple, en fonction de la fréquence à mesurer et du débordement du timer0, il faut adapter la fréquence de lecture du timer0.
    David.
    Encore une question : comment détermine-t-on que l'on mesure depuis 10µ secondes ? Avec le watchdog ?

    Merci pour ton aide,
    Jean-Marie

  19. #18
    invite3a1051d7

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    bonjour,
    si j'ai bien compris
    avec le pic qui va bien
    je mets le timer0 à 0
    j'attends un certain temps (avant le debordement du timer en fonction de la frequence )
    le recupere la valeur du timer0
    et je traite l'information .
    cordialement
    Alain

  20. #19
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Il faut un diviseur de fréquence hardware externe au µC, le prédiviseur du µC ne fait qu'incrémenter la valeur du timer toutes les X périodes, et cette période doit faire minimum 240nS(paramètre 42) si tu utilises le prédiviseur du µC.
    Dit autrement, il faut ajouter une "interface pour diviser la fréquence" au µC pour avoir une période de 240nS en entrée du µC si le signal à mesurer est plus rapide que ces satanées 240nS du 16F84.

    Pour ton autre question, avec le 16F84 c'est une boucle software qui doit faire exactement 10µSec.

    Cela signifie en deux mots :

    - reset du timer0
    - lancer la boucle de 10µSec et attendre la fin de cette boucle
    - lire le contenu du timer0
    - calculer la période
    - et recommencer

    David.

  21. #20
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Oui Alainav1, c'est exactement cela...

    Par contre, avec un PIC à deux timers, il est possible de faire la gestion complète grâce aux deux timers, et on évite ainsi de "perdre" le temps nécessaire au traitement des données.

    Avec un timer c'est : attente d'un temps X plus traitement de l'info

    Alors qu'avec deux timers c'est : traitement de l'infos durant l'attente du temps X car la tempo est hardware et non software.

    David.

  22. #21
    paulfjujo

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    bonjour,

    l'appli frequencemetre 16F84 que je decris est effectivement
    d'apres la version originale de WWW.WEEDTECH.COM by Peter Cousens October 1998 ...
    je l'ai testée .. OK, avec une fréquence maxi de 32MHz issue d'un oscillateur à
    quartz de ce type (quartz.jpg) et aussi avec un emetteur de telecommande 27,125MHz!

    RA4 est une entree trigger , donc le temps mini de montée doit etre pris au niveau haut du trigger ce qui laisse à supposer un temps plus cours que
    celui de la Data-sheet , sinon on ne pourrait deja pas atteindre 32Mhz .
    L'amplitude reelle du signal sur l'entree RA4 influence aussi la reponse
    en frequence.En general la bande passante est plus grande en petits signaux ,justement à cause des temps de montée (et descente !)

  23. #22
    paulfjujo

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    oups!
    le trombonne à sauté..
    Images attachées Images attachées  

  24. #23
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Oui, chez toi cela fonctionne et probablement ailleurs, je ne le nie pas.
    Mais que ce montage fonctionne systématiquement avec un 16F84, c'est bien moins certain...

    Par contre, c'est de très loin hors spécifiaction du 16F84, et ce n'est pas 'politiquement correct' ce genre de montage...

    Vaut mieux utiliser un simple 16F627-8, qui à une période de 20nS spécifiée dans le datasheet.

    David.

  25. #24
    invitef86a6203

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    traduction de l'AN592 de Microchip
    Code:
    MICROCHIP 					AN592
    
    Application Note 592
    ========================================================================
    		Fréquencemètre utilisant un PIC16C5X
    ========================================================================
    
    ******************************************
    * Auteur:	Stan D'Souza             *
    *		Logic Products Division  *
    ******************************************
    
    INTRODUCTION
    
    RTCC => Real Time Clock/Counter (Compteur/Horloge Temps Réel)
    
    Le PIC16C5X a un Timer (temporisateur) de 8 bits(RTCC), Lequel peut-être utilisé
    avec un Prescaler (Pré diviseur) de 8 bits. Le pré diviseur fonctionne librement 
    (asynchronously), ainsi il peut compter une fréquence élevée. Le front minimum et 
    le temps du front descendant est de 10ns, de sorte que la fréquence la plus élevée
    d'horloge le RTCC peut compter est de 50Mhz. Le pré diviseur doit-être utilisé pour
    mesurer des fréquences élevées. Le pré diviseur peut-être configuré pour divisé par
    256, La résolution maximum à laquelle la fréquence d'entrée peut-être mesuré est 
    de 16 bits. D'autre part, le pré diviseur ne peut pas être lu directement comme un
    registre de mémoire. Cette note d'application décrit l'unique méthode par laquelle
    l'utilisateur peut extraire la valeur de 8 bits du pré diviseur, Ou la résolution
    de la mesure est de 16 bits avec les 8 bits de poids fort dans le RTCC et les 8 
    bits de poids faible dans le pré diviseur.
    
    IMPLEMENTATION
    
    Un fréquencemètre qui peut lire des fréquences de 50 Hz à 50 Mhz est décrit dans 
    cette note d'application dans le but de démontrer cette méthode de mesure de valeur
    16 bits venant du pré diviseur et du RTCC.
    
    Le montage matériel de base est décrit figure 1. Il consiste à entrée la fréquence  
    à RTCC ou RA4 (pin 3 dans le 16C54). RA4 est connecté à RA2. La fréquence d'entrée
    est connectée à RTCC à travers une résistance de 470 ohms.
    
    Le RTCC est configuré pour mesurer la fréquence d'entrée, à RA4 du PIC16C54. La fréquence 
    d'entrée est "gated" ("échantillionner") pour une durée précise de temps. Avant de
    commencer cette "échantillionnage" précis, le RTCC est remise à zéro (ce qui efface 
    aussi le pré diviseur), et la pin RA2 et configuré en entrée. l' "échantillionnage" 
    précis est implanté dans le logiciel comme un délai précis, la pin RA2 est configurée
    en sortie se positionnant à l'état bas. Ceci provoque la pause ou l'arrêt de l'entrée RTCC.
    Une valeur de 16 bits de la fréquence d'entrée est maintenant sauvée venant du RTCC et du
    pré diviseur. Le 8 bits de poids fort sont dans le RTCC et peuvent être lu aisément. Les bits
    de poids faible doivent-être "shifted-out" ("glissées en dehors") du pré diviseur en inversant
    RA2 avec les instructions "BSF" et "BCF". Après chaque inversement, la valeur de RTCC est 
    vérifiée pour voir si RTCC à été incrémenté, si le nombre d'inversement nécessaire pour incrémenter
    RTCC de 1 est N, puis la valeur 8 bits du pré diviseur peut-être calculé comme (256 - N). En assemblant
    la valeur calculé et la valeur original du RTCC, la valeur 16 bits est ainsi déterminée.
    
    Pour mesuré une large gamme de fréquences, les étapes intermédiaires sont effectuer:
    
    ******************************************************************
    * Gamme de fréquence * délai "fenêtre d'ouverture" *  Précision  *
    ******************************************************************
    *  50 Mhz - 10 Mhz   *          1 ms               *    ±10 Khz  *
    ******************************************************************
    *  10 Mhz -  1 Mhz   *          1 ms               *     ±2 Khz  *
    ******************************************************************
    *  1 Mhz - 100 Khz   *          1 ms               *   ±200 hz   *
    ******************************************************************
    * 100 Khz - 10 Khz   *         200 ms              *    ±50 hz   *
    ******************************************************************
    *  50 Khz - 50 hz    *          50 ms              *     ±2 hz   *
    ******************************************************************
    
    Dans ce cas, Le RTCC utilise l'horloge interne de 4 Mhz et compte le nombre de cycles de l'horloge externe.
    Le maximum de temps nécessaire est de 50 ms, pour faire une mesure de ±2 hz de précision, pour mesurer une 
    fréquence de 10 Khz en entrée.
    
    La vérification pour la fréquence correct est faite automatiquement commençant par la haute fréquence 
    et se terminant par la basse fréquence. Le temps maximum nécessaire pour chaque conversion est 
    d'approximativement 310 ms. Entre d'autre termes, trois vérification de fréquence sont faites par 
    seconde.
    
    CONCLUSION
    
    La famille des PIC16C5X peut-être utilisée pour faire une mesure de 16 bits d'une fréquence
    d'entrée avec seulement une résistance et un port d'entrée/sortie.

  26. #25
    invitef86a6203

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    le code ASM ci joint

    le pdf ;
    http://f6csx.free.fr/PROJETS/Fmetre/AN592.pdf
    Fichiers attachés Fichiers attachés

  27. #26
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Salut,

    Oui, avec un 16C54 on est dans les spécifications du µC, car le paramètre 42 indique un Ttop min de "20nS or Tcy+40nS"

    Au final, je me demande s'il n'y a pas que le 16F84 qui est limité au niveau du paramètre Ttop...

    David.

  28. #27
    schneiderj

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Citation Envoyé par DavidDB Voir le message
    Salut,

    Oui, avec un 16C54 on est dans les spécifications du µC, car le paramètre 42 indique un Ttop min de "20nS or Tcy+40nS"

    Au final, je me demande s'il n'y a pas que le 16F84 qui est limité au niveau du paramètre Ttop...

    David.
    David,

    je ne comprends pas ta remarque : le 16F84 permet de compter jusqu'à 50 MHz, moyennant un certain nombre de précaution sur l'entrée sur RA4, alors ,pourquoi sans priver ? Ceci dit pour mon cas (enfin pour l'instant) je n'ai besoin que de 100 KHz. Ce qui hier soir me semblait complétement hors de propos avec le compilateur C que j'utilise.

    Jean-Marie

  29. #28
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Quelles précautions???

    le 16F84 ne permet pas compter une période inférieure à 240nS, c'est spécifié dans son datasheet et si cela fonctionne rien n'est garanti vu que c'est hors spécifications...

    Si tu as le choix, utilise un autre PIC capable de mesurer 50MHz par l'indication du paramètre Ttop...

    Je n'ai fait que décortiquer les paramètres du Timer0 présent dans le 16F84 qui indique l'impossibilité de mesurer une telle fréquence.

    Je ne peux rien te dire d'autre...

    David.

  30. #29
    schneiderj

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Merci pour ton aide. Mais je reste sur ma faim... celle du novice qui ne comprend pas tout

    Jean-Marie

  31. #30
    invitef26bdcba

    Re : PIC 16F84 et prediviseur jusqu'à 50 Mhz

    Qu'est ce que tu n'arrives pas à comprendre exactement?

    David.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. pic 16f84
    Par invite423d6f67 dans le forum Électronique
    Réponses: 7
    Dernier message: 23/04/2008, 22h54
  2. pic 16f84
    Par invitea821b3a8 dans le forum Électronique
    Réponses: 7
    Dernier message: 10/01/2007, 15h50
  3. pic 16F84
    Par invite894c2685 dans le forum Électronique
    Réponses: 23
    Dernier message: 22/09/2006, 14h39
  4. pic 16F84
    Par invite894c2685 dans le forum Électronique
    Réponses: 0
    Dernier message: 21/09/2006, 15h47
  5. PIC 16F628-20, horloge interne 4 ou 20 Mhz
    Par maho dans le forum Électronique
    Réponses: 2
    Dernier message: 22/01/2005, 20h01
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...