Configurer Horloge PIC32 pour USB (quartz externe)
Répondre à la discussion
Affichage des résultats 1 à 21 sur 21

Configurer Horloge PIC32 pour USB (quartz externe)



Vue hybride

  1. #1
    invite5725992d

    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. #2
    inviteeb160de1

    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

  3. #3
    invite29971eb1

    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

  4. #4
    invite5725992d

    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

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

    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.

  7. #6
    invite5725992d

    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 ?!

  8. #7
    invite29971eb1

    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

  9. #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+

  10. #9
    invite29971eb1

    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.

  11. #10
    invitef26bdcba

    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.

  12. #11
    invite5725992d

    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!

Discussions similaires

  1. horloge a quartz a 4MHz
    Par invite06909014 dans le forum Électronique
    Réponses: 6
    Dernier message: 26/01/2011, 17h55
  2. TPE horloge à quartz
    Par invite134b110a dans le forum TPE / TIPE et autres travaux
    Réponses: 0
    Dernier message: 10/11/2009, 15h09
  3. Horloge à quartz
    Par invite134b110a 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 invite4208c962 dans le forum Électronique
    Réponses: 1
    Dernier message: 01/05/2007, 15h09
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...