Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

Configurer Horloge PIC32 pour USB (quartz externe)



  1. #1
    pseudoguyanais

    Configurer Horloge PIC32 pour USB (quartz externe)


    ------

    Bonjour,

    Pourriez-vous m'aider à faire les bons bouts de code C pour bien configurer mon PIC32MX795 SVP?

    J'ai essayer de trouver la bonne config sur le net mais je rame et surtout pour comprendre les mots des registres d'horloge.
    Par exemple j'ai voulu reprendre le code qu'utilise la démo pour Starter Kit, celui-ci a un quartz externe de 8MHz, mais moi de 10MHz.

    Voici leur code :
    Code:
        #pragma config UPLLEN   = ON            // USB PLL Enabled
        #pragma config FPLLMUL  = MUL_20        // PLL Multiplier
        #pragma config UPLLIDIV = DIV_2         // USB PLL Input Divider
        #pragma config FPLLIDIV = DIV_2         // PLL Input Divider
        #pragma config FPLLODIV = DIV_1         // PLL Output Divider
        #pragma config FPBDIV   = DIV_1         // Peripheral Clock divisor
        #pragma config FWDTEN   = OFF           // Watchdog Timer 
        #pragma config WDTPS    = PS1           // Watchdog Timer Postscale
        #pragma config FCKSM    = CSDCMD        // Clock Switching & Fail Safe Clock Monitor
        #pragma config OSCIOFNC = OFF           // CLKO Enable
        #pragma config POSCMOD  = HS            // Primary Oscillator
        #pragma config IESO     = OFF           // Internal/External Switch-over
        #pragma config FSOSCEN  = OFF           // Secondary Oscillator Enable
        #pragma config FNOSC    = PRIPLL        // Oscillator Selection
        #pragma config CP       = OFF           // Code Protect
    Mais je ne comprends pas trop le rôle exact de tous ces mots clés même avec les commentaires et la DS.
    Par exemple quelle est la différence entre UPLLIDIV & FPLLIDIV ??
    A quoi fait référence "l'input" et "l'Output"? Ce sont les entrées et sortie de quoi?
    D'après ce que j'ai trouvé sur le net, il faut atteindre 48MHz pour l'USB. Avec ce code je comprends vraiment pas comment ils passent de 8MHz à 48MHz.........

    Merci de votre aide

    -----

  2. Publicité
  3. #2
    Aurélien

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Le plus simple est de se referrer à la valeur de ces fuses (voir dans le fichier de ton micro .h) et d'en déduire en comparant avec la datasheet quel role a chaque fuse et sa valeur associée.

    Aurélien

  4. #3
    ftorama

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Et oui, parfois il faut ouvrir les docs, et particulièrement le chapitre PLL:
    http://ww1.microchip.com/downloads/e.../DS-61156B.pdf
    chapitre 8 (page 113/240)

    La génération d'horloge de l'USB nécessite une fréquence de 4 MHz en entrée de la PLL dédiée. Pour cela, on règle le facteur de division d'entrée à 2 (FUPLLDIV<2:0>).

    La PLL multiplie par 24, puis un étage supplémentaire redivise par 2, on obtient donc 8 /2 *24 /2= 48MHz

    Avec un quartz 10MHz, il semblerait que ça ne puisse tout simplement pas marcher, à moins que ce schéma ne soit incomplet

    Si le schéma qui est incomplet, c'est la doc qui est pourrie, si il est complet, c'est le microcontrôleur qui l'est
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  5. #4
    pseudoguyanais

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Merci ftorama, effectivement je n'avais jamais prêter attention au schéma et je regardais juste les registres.
    Pourtant maintenant j'ai bien compris juste en qlq secondes...

    Bon ben ouaip on dirait bien que je suis dans la m**de ...! Puisque il n'y a pas de pll pour multiplier et qu'on passe directement au diviseur...Pas de bol

    Sinon juste pour info la DS que tu as mis en lien est dépassée. Il existe la DS-61156D.

    Merci encore

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

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Citation Envoyé par pseudoguyanais Voir le message
    Merci ftorama, effectivement je n'avais jamais prêter attention au schéma et je regardais juste les registres.
    Pourtant maintenant j'ai bien compris juste en qlq secondes...
    De rien, je viens de me taper de la config de PLL, je suis encore dans le trip

    Bon ben ouaip on dirait bien que je suis dans la m**de ...! Puisque il n'y a pas de pll pour multiplier et qu'on passe directement au diviseur...Pas de bol
    Le plus simple serait de changer le quartz, même si je te dirai que le problème ne vient pas de là....

    Sinon juste pour info la DS que tu as mis en lien est dépassée. Il existe la DS-61156D.
    J'ai pas vérifié, c'est Google qui m'a induit en erreur, mais j'étais déja tombé sur des docs obsolètes, même chez Grochip.
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  8. #6
    pseudoguyanais

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Citation Envoyé par ftorama
    Le plus simple serait de changer le quartz, même si je te dirai que le problème ne vient pas de là....
    Tu voudrais que passe chez ATMEL ?!

  9. Publicité
  10. #7
    ftorama

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Citation Envoyé par pseudoguyanais Voir le message
    Tu voudrais que passe chez ATMEL ?!
    J'ai pas encore testé les AVR32 mais il parait qu'ils envoient du lourd. En 32 bits, j'ai fait un peu d'ARM9, de l'ARM7 et je commence les Cortex-M3. Ces derniers sont vraiment des petits bijoux. Je me demande même quel cinglé peut être capable de totalement les maîtriser vu les options dont ils disposent
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  11. #8
    RISC

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Salut,

    Pour mieux comprendre les possibilités du système d'horloge, il est recommandé de regarder...la datasheet du PIC32MX795, figure 8-1

    On voit au milieu un diviseur (div x) --- PLL --- (div y)
    div x c'est le diviseur INPUT et div y le diviseur OUTPUT.
    La condition importante à respecter est 4MHz <= Fin <= 5MHz.
    Cela permet à l'utilisateur d'utiliser à peu près n'importe quel quartz pour le CPU

    Par contre coté USB, il y a moins de souplesse. Il faut absolument avoir du 48MHz à la sortie.
    Ufin à l'entrée doit être de 4MHz et il y a juste un diviseur div x (UPLLIDIV) entre l'entrée (ton quartz) et l'entrée de la PLL qui multiplie par 24 et divise par 2 (4 x 24 / 2 = 48MHz).
    Cela veut dire qu'il faudrait trouver div x = 2,5 ....
    Comme tu le sais sans doute, faire un diviseur de fréquence numérique par une valeur non entière relève de l'équilibrisme...

    Il te suffit maintenant de lire le chapitre 28 "Special features" qui montre comment programmer tous les registres de configuration.
    Pour UPLLIDIV (registre DEVCFG2) les valeurs possibles sont : 1,2,3,4,5,6,10,12.
    Conclusion : si tu veux l'USB il faut mettre 8MHz en entrée ou tout autre valeur qui divisée par une des valeurs ci-dessus donne 4MHz

    a+

  12. #9
    ftorama

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Citation Envoyé par RISC Voir le message
    Comme tu le sais sans doute, faire un diviseur de fréquence numérique par une valeur non entière relève de l'équilibrisme...
    Ce n'est pas parce que Microchip ne le fait pas que c'est une impossibilité technique. N'importe quel étage PLL sérieux dispose d'un multiplicateur et d'un diviseur. Le ratio des 2 donne un rapport non entier entre fréquences d'entrée et de sortie. Sur un STM32F103 par exemple, on peut très bien avoir des ratios d'horloge de 7/8 ou de 5/16.

    Maintenant, c'est vrai qu'un facteur de 4,8 n'est pas un cadeau, ne serais-ce que parce que ça ne donne pas une fraction et la plupart des micros utilisent des diviseurs de fréquence qui soient des puissances de 2.
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  13. #10
    DavidDB

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Dans tous les cas, mettre un quartz sur un µC et ensuite s'occuper des caractéristiques techniques est une ineptie de mon point de vue...

    On étudie en premier les besoins de la futur application et ensuite seulement on choisit ses composants...

    David.

  14. #11
    pseudoguyanais

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Salut,

    Citation Envoyé par DavidDB
    Dans tous les cas, mettre un quartz sur un µC et ensuite s'occuper des caractéristiques techniques est une ineptie de mon point de vue...

    On étudie en premier les besoins de la futur application et ensuite seulement on choisit ses composants...

    David.
    Ou alors j'ai dû reprendre un projet déjà commencé par qqn d'autre avec un prototype déjà créé que je dois maintenant faire tourner. Donc oui je suis d'accord mais j'ai bien dû chercher pourquoi je n'arrivais pas à le faire fonctionner!

  15. #12
    ftorama

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Citation Envoyé par pseudoguyanais Voir le message
    Salut,
    Ou alors j'ai dû reprendre un projet déjà commencé par qqn d'autre avec un prototype déjà créé que je dois maintenant faire tourner. Donc oui je suis d'accord mais j'ai bien dû chercher pourquoi je n'arrivais pas à le faire fonctionner!
    Ah bah c'est aussi en se plantant qu'on apprend
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  16. Publicité
  17. #13
    DavidDB

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Citation Envoyé par pseudoguyanais Voir le message
    Salut,
    Ou alors j'ai dû reprendre un projet déjà commencé par qqn d'autre avec un prototype déjà créé que je dois maintenant faire tourner. Donc oui je suis d'accord mais j'ai bien dû chercher pourquoi je n'arrivais pas à le faire fonctionner!
    Ben alors, ce quelqu'un n'a pas du faire grand chose, car même l'alimentation ne fonctionne pas (lu sur ABC...)

    Le mieux pour toi est de tout reprendre à zéro, et de jeter purement et simplement le proto que tu as reçu en héritage...

    David.

  18. #14
    pseudoguyanais

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Citation Envoyé par DAvidDB
    car même l'alimentation ne fonctionne pas (lu sur ABC...)
    Hé oh, avant de faire des raccourcis faut faire attention...
    Ce n'est même pas vrai que l'alimentation ne fonctionnait pas!
    Comme j'avais des problèmes avec cette carte j'ai soulevé plusieurs pistes et comme je trouvais des montages différents et des avis différents sur la configuration de l'alim (entre autres) j'ai essayé de savoir si ce qui avait été fait était bon!
    Comme je ne voulais pas, justement, être influencé par ce qui avait déjà été fait j'ai cherché comment cela devait être fait! Et surprise la conclusion confirme ce qui avait été fait...

    Donc le problème ne vient peut être que de l'horloge (j'ai pas encore changé) et peut etre qu'il y aura d'autres problèmes.
    Maintenant ce qu'aurait dû faire celui qui m'a laissé le montage c'est d'écrire des docs pour comprendre pourquoi il avait fait ça.

    En tout cas il ne faut pas juger les gens trop vite.

    Merci

  19. #15
    pseudoguyanais

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Maintenant j'ai une autre question:

    Je me soucis de savoir si le changement de quartz va affecter les liaisons séries.

    En effet je vais utiliser l'UART du µc et donc avec des baud rates particuliers. Je voulais être sûr de connaitre la bonne relation entre Baud Rate et Fréquence.

    J'ai trouvé des sites où c'était écrit qu'à chaque fréquence correspond un baud rate et d'autres qui disent que n'importe quel baud rate peut être atteint avec un quartz donné en faisant un petit calcul.

    Par exemple ces sites donnent une équation :
    http://books.google.com/books?id=NHQ...page&q&f=false

    http://www.mytutorialcafe.com/Microc...r%20Serial.htm

    Dans un forum qqn disait que le baud rate est la vitesse à laquelle les données sont transmises et la fréquence c'est la vitesse de l'onde qui transporte les données, et que de ce fait on pouvait transmettre sur chaque fréquence des bits à n'importe quel Baud rate.

    Mais je le comprends pas vraiment...!

    Donc au final, avec n'importe quel quartz je peux avoir n'importe quel Baud Rate ou pas?

  20. #16
    ftorama

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    De manière générale, la fréquence de l'UART (donc le baudrate) est obtenue par division de la fréquence système (ici la sortie de la PLL).

    Selon la valeur du quartz, tu vas obtenir des baudrates proches des baudrates standards mais pas forcément exacts. En général, une différence de +/- 2% n'est pas grave.

    Selon les microcontrôleurs, il existe des différentes manières de régler plus ou moins précisément le baudrate.
    Quand un homme a faim, mieux vaut lui aprendre à pecher que de lui donner un poisson.

  21. #17
    pseudoguyanais

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    ok donc pas trop grave pour le baudrate.

    Sinon pour revenir au sujet de départ il me semble que je peux utiliser l'usb avec l'oscillateur interne (FRC).

    J'ai déjà lu que comme ce n'étais pas un quartz mais un résonateur à bas de circuit RC il n'est pas très précis (bien que je n'ai pas trouvé encore de chiffre pour la précision).

    Mais ce qui me trouble un peu quand on regarde le schéma sur les PLL dont on parlait plus haut, apparemment l'oscillateur interne arrive directement sans changement pour obtenir le 48MHz alors qu'il est de 8 MHz !

    Il faut juste apparemment modifier le registre UFRCEN :
    -si il est à 1 -> Enable FRC as the clock source for the USB clock source
    -si 0 -> Use the primary oscillator for USB PLL as the USB clock source

    Donc ça me change directement mon 8MHz en 48MHz avec la UFRCEN à 1 ou alors j'aurais juste l'USB qui tourne à 8MHz??

  22. #18
    Aurélien

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    De l'USB avec un oscillateur RC ? Ca m'etonnerait bien fort. Du low speed, àa la rigueur, mais pas du full speed. C'est un défi pour les intégrateurs de faire des oscillateurs internes subvenant aux besoins de précision et jitter de l'USB. FTDI n'a pas intégré ce genre d'oscillateur dans ses produits tout de suite..

    Aurélien

  23. Publicité
  24. #19
    RISC

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Salut,

    Le PIC32MX795 possède un oscillateur RC interne à +/- 2% sur toute la gamme de température (-40/+85C) et toute la gamme de tension (2.2 à 3.6V) (voir table 31-19 de la datasheet). Cette précision est acceptable pour les UART mais pas pour l'USB qui est je crois à 500ppm.

    Ne perds pas ton temps. Monte un quartz à 8MHz !!!!!!!!

    A partir de 8MHz tu peux faire tout ce que tu veux avec les prescaler IN et OUT et le multiplicateur de la PLL

    a+

  25. #20
    pseudoguyanais

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Oui oui merci j'avais bien compris l'histoire du quartz externe et des divisions par PLL possibles après mais c'est juste que ca me surprenais que dans le schéma on pouvait voir un branchement directe entre l'oscillateur interne et l'horloge usb.
    Tenez je vous mets le schémas en PJ

    J'ai cherché un peu mais n'ai pas trouvé les spécifications sur la précision du RC interne. Où les as tu trouvé RISC?

    Merci
    Images attachées Images attachées  

  26. #21
    RISC

    Re : Configurer Horloge PIC32 pour USB (quartz externe)

    Salut,

    Tout ce qui concerne les caratéristiques électriques se trouve à la fin de la datasheet. La précision de l'oscillateur FRC est visible dans la table 31-19.

    Concernant l'USB, il ne peut pas utiliser l'horloge interne FRC.
    En relisant la documentation du module USB, on trouve l'explication :
    "The internal 8MHz FRC oscillator is available as a clock source to detect any USB activity during USB SUSPEND mode and bring the module out of the SUSPEND mode"

    En clair l'utilisation de FRC est limitée à la détection d'activité sur la liaison USB pendant le mode SUSPEND. FRC ne peut donc être utilisé en tant qu'horloge pour l'USB et n'a donc pas besoin de passer au travers de la PLL. Cela permet une faible consommation du PIC en mode SUSPEND.

    a+

Discussions similaires

  1. horloge a quartz a 4MHz
    Par yogui dans le forum Électronique
    Réponses: 6
    Dernier message: 26/01/2011, 17h55
  2. TPE horloge à quartz
    Par Boulette63 dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 10/11/2009, 15h09
  3. Horloge à quartz
    Par Boulette63 dans le forum Physique
    Réponses: 4
    Dernier message: 17/10/2009, 12h01
  4. Réponses: 0
    Dernier message: 05/07/2008, 19h59
  5. horloge sans quartz
    Par liona0600 dans le forum Électronique
    Réponses: 1
    Dernier message: 01/05/2007, 15h09
Découvrez nos comparatifs produits sur l'informatique et les technologies.