Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur le langage C !

Modérateur : Jérémy

Oscillateur, UART et PLL ???
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#1 Message par Jérémy » lun. 24 juil. 2017 20:58 lien vers la Data-Sheet : Cliquez ici

Bonsoir à tous,

Je rencontre un problème que j'ai toujours eu, mais j'ai toujours opté pour la solution la plus facile pour le contourner. Ca me saoule de ne pas comprednre depuis tant de temps !

ce n'est pas la premiére fois que je pose la question qui tourne autour !

Je souhaite établir une com UART à 19200 bauds. Je souhaite aussi faire fonctionner mon PIC à fond les ballons soit 32Mhz.

Je tests mon oscillateur avec une LED et une pause; je l'a fait clignoter toute les secondes; Ma led clignote tout doucement.
J'active les PLL et je reste à 32Mhz . MA LED clignote toute les secondes !

Ok !!

J'essaye d’établir une com UART à 19200 bauds , ça fonctionne pas :furieux:

JE passe ma Fosc à 8Mhz et je désactive les PLL , ça fonctionne !!! :mur:

résultat des courses suis je poblige de faire focntionner mon PIC à 8Mhz ???? ( c'est ce que j'ai toujours fait ) mais bon .....

Est ce que 19200bauds c'est trop lent , pour un PIC qui mouline à 32Mhz ?

Merci à vous
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Oscillateur, UART et PLL ???
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#2 Message par Temps-x » mar. 25 juil. 2017 15:03 lien vers la Data-Sheet : Cliquez ici

Bonjour Jérémy, et bonjour tous le monde,

je désactive les PLL


C'est quoi une PLL ?

A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Oscillateur, UART et PLL ???
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#3 Message par Jérémy » mar. 25 juil. 2017 15:20 lien vers la Data-Sheet : Cliquez ici

Phased loop lock . autrement dit et en bon français "boucle a verrouillage de phase" . C'est pour faire aller plus vite le µP , il me semble, mais ca dépasse largement mes compétences !

A mon niveau déjà, je ne comprends pas a quoi ca sert de le faire tourner plus doucement que à fond !!! exit

Réduire la conso ? OK
diminuer les fréquences ? oui bof !!! peut etre quelques cas ...

A foutre le bazar dans ma tête... ca OUI :-D
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Oscillateur, UART et PLL ???
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#4 Message par Temps-x » mar. 25 juil. 2017 22:04 lien vers la Data-Sheet : Cliquez ici

Bonsoir Jérémy, et bonsoir tous le monde

Ce que j'ai trouvé, mais toujours pas évident à comprendre :

Une boucle à verrouillage de phase classique est constituée :

- d'un comparateur de phase
- d'une pompe de charges
- d'un filtre de boucle,
- d'un oscillateur commandé en tension
- d'un diviseur de fréquence.

Je crois avoir compris, lire le sujet qui est ici :
http://forums.futura-sciences.com/elect ... e-pll.html

Si tu veux avoir une fréquence plus haute, j'ai bien l'impression qu'il faut activer la PLL.

Avant toute chose, si on veut comprendre ce qui se passe dans le pic, il faut comprendre les définitions techniques,
pas toujours évident, surtout quand c'est expliqué en anglais. :furieux:

Est ce que 19200 bauds c'est trop lent , pour un PIC qui mouline à 32Mhz ?


La durée de chaque bit est une constante et dépend de la vitesse de transmission.

Par exemple, pour une vitesse de 9600 bauds, c’est à dire 9600 bits par seconde, chaque bit durera

((1s/9600) * 1000000) = 104,17 µS.

Pour ton cas :

((1s/19200) * 1000000) = 52,08 µs

Je dirais, qu'avec un quartz à 4 Mhz il n'y a pas de problème, alors à 32 Mhz ça passe tranquille.

A+
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Oscillateur, UART et PLL ???
Jérémy
Administrateur du site
Administrateur du site
Messages : 2722
Âge : 44
Enregistré en : juillet 2015
Localisation : Dans le sud
Contact :

#5 Message par Jérémy » mar. 25 juil. 2017 22:39 lien vers la Data-Sheet : Cliquez ici

Oui c'est chaud la PLL !!

Bon je pense que j'ai un soucis avec ma carte EasyPIC . En même je la malmène la pauvre !!! des fois ca fonctionne , des fois non .....
La je touche plus a rien ça fonctionne à 8Mhz .

Je relance le programme avec cette fois PLL enable et je pense à 32Mhz . Ça fonctionne aussiiii :mur: :mur: :furieux: :furieux: :furieux: .

tant mieux mon PB est résolu, mais pas compris pourquoi lol ....
C'est en faisant des erreurs, que l'on apprend le mieux !!!

Oscillateur, UART et PLL ???
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#6 Message par paulfjujo » mer. 26 juil. 2017 10:03 lien vers la Data-Sheet : Cliquez ici

Bonjour Jeremy et à tous,


Il y a effectivement un piege à "ions" avec cette PLL
et en particulier si on utilise l'oscillateur interne
forcémént à 8MHz pour utiliser la PLL

Code : Tout sélectionner


The 4xPLL is not available for use with the internal
oscillator when the SCS bits of the OSCCON register
are set to ‘1x’
. The SCS bits must be set to ‘00’ to use
the 4xPLL with the internal oscillator


Pour utiliser l'oscillateur interne il faut mettre SCS1 à 1... mais le mettre à 0 si on utilise AUSSI la PLL
ce qui donne

Code : Tout sélectionner



    
#define With_PLL

  // OSCCON: OSCILLATOR CONTROL REGISTER
  // bit 7 SPLLEN: Software PLL Enable bit
  //If PLLEN in Configuration Word 1 = 1:
  // SPLLEN bit is ignored. 4x PLL is always enabled (subject to oscillator requirements)
  // If PLLEN in Configuration Word 1 = 0:
  // 1 = 4x PLL Is enabled
  // 0 = 4x PLL is disabled
  //bit 6-3 IRCF<3:0>: Internal Oscillator Frequency Select bits
  //bit 1-0  SCS<1:0>: System Clock Select bits
  //1x = Internal oscillator block
  //01 = Timer1 oscillator
   //    OSCCON = 0b01111010 ; // 16 Mhz oscilateur interne

    // 8 Mhz oscilateur interne
        OSCCON=0;
        OSCCON.IRCF3=1;
        OSCCON.IRCF2=1;
        OSCCON.IRCF1=1;
        OSCCON.IRCF0=0;
        OSCCON.SCS0=0;
        #ifdef With_PLL
        OSCCON.SCS1=0;
        OSCCON.SPLLEN=; //active PLL  so FOSC=8x4=32MHz
        #else
         OSCCON.SCS1=1;
        #endif
        OSCTUNE=0;
        Delay_ms(1000);
        Init_Hardware();
   
   UART1_Init
(115200);
     UART1_Write(CLS);
   Delay_ms(500);
   CRLF1();
   clk = Get_Fosc_kHz();
   LongWordToStr(clk,CRam1);
   UART1_Write_CText(" Get_Fosc_Khz = ");
   UART1_Write_Text(CRam1);
   CRLF1();


result :
//Get_Fosc_Khz = 32000


à 32MHz , l'UART peut monter à 115K bauds avec 0,64% d'erreur
exemple : datasheet 16F1847 page 303 tableau 26.5

Testé OK, à 115200 bauds , avec un 16F1847 alimenté en 3,3V
et un cordon Prolic TTL/USB -> Tera Terminal

oubli parametre important:
config bit
CONFIG1 : $8007 : 0x39E4
CONFIG2 : $8008 : 0x1613
Modifié en dernier par paulfjujo le mer. 26 juil. 2017 10:33, modifié 2 fois.
Aide toi, le ciel ou FantasPic t'aidera

Oscillateur, UART et PLL ???
cyril13110
Confirmé
Confirmé
Messages : 724
Âge : 41
Enregistré en : avril 2016
Localisation : 13

#7 Message par cyril13110 » mer. 26 juil. 2017 10:18 lien vers la Data-Sheet : Cliquez ici

bonjour à tous,
une boucle à verrouillage de phase sert à augmenter artificiellement la fréquence par la division de la période par un paramètre interne.
et normalement ca n'influe sur rien dans le reste du pic......
si tu mal mene ta platine regarde que tu n'ai pas un faut contact quelque part.........
La seul chose que je retiens de l'oscillateur interne du pic est qu'il produit plus d'erreur qu'un quartz externe car la fiabilité du circuit n'est pas la meme.

Oscillateur, UART et PLL ???
paulfjujo
Avatar de l’utilisateur
Expert
Expert
Messages : 2589
Âge : 73
Enregistré en : juillet 2015
Localisation : 01800
Contact :

#8 Message par paulfjujo » mer. 26 juil. 2017 10:42 lien vers la Data-Sheet : Cliquez ici

cyril13110 a écrit : ..
et normalement ca n'influe sur rien dans le reste du pic......


si justement ..
sauf cas particulier .. ex: oscillateur extern pour Timer1
et mode sleep , basse consommation , commmutation sur 31KHz

Sur d'autres PICS evolués ( ou plutot compliqués) il y a differenciation entre Fosc MCU et Peripheriques
et là, le schema , diagram de l'oscillateur s'impose pour pouvoir suivre les differentes combinaisons. ex 18F87J50

Fosc.jpg
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Aide toi, le ciel ou FantasPic t'aidera

Oscillateur, UART et PLL ???
cyril13110
Confirmé
Confirmé
Messages : 724
Âge : 41
Enregistré en : avril 2016
Localisation : 13

#9 Message par cyril13110 » mer. 26 juil. 2017 11:09 lien vers la Data-Sheet : Cliquez ici

paulfjujo a écrit :
si justement ..
sauf cas particulier .. ex: oscillateur extern pour Timer1
et mode sleep , basse consommation , commmutation sur 31KHz

Sur d'autres PICS evolués ( ou plutot compliqués) il y a differenciation entre Fosc MCU et Peripheriques
et là, le schema , diagram de l'oscillateur s'impose pour pouvoir suivre les differentes combinaisons. ex 18F87J50

Fosc.jpg


quand je dit que ca n'influe pas je veux tous simplement dire que ca ne bloque pas, ca va juste faire mouliner plus vite le pic et rien de plus.
en tous ca ca ne bloque pas l'UART.

Oscillateur, UART et PLL ???
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#10 Message par Temps-x » mer. 26 juil. 2017 22:20 lien vers la Data-Sheet : Cliquez ici

Bonsoir Jérémy, et bonsoir à tous,

une boucle à verrouillage de phase sert à augmenter artificiellement la fréquence par la division de la période par un paramètre interne.


c'est bien ce que je pense aussi, ça me rappelle un montage que j'avais fait sur éléctronique pratique, et qui parlait d'une PLL.
à l'époque j'avais cherché à comprendre, mais j'ai vite désenchanté, quand j'ai vu la complexité.

A+
Modifié en dernier par Temps-x le jeu. 27 juil. 2017 22:04, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:


Retourner vers « Langage C »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 39 invités