Pour plus d'informations sur la programmation sur microcontrôleur PIC, consultez la section PIC.
PIC 18F2455 et oscillateur externe
Le jeudi 13 avril 2006 à 23:58 - Lien permanent
Jusqu'à présent, j'avais utilisé l'oscillateur interne des PIC. Cependant, dans l'optique d'utiliser un jour les capacités de connexion des PIC 18F, j'ai cherché à installer un quartz. Le montage est très simple : il suffit de mettre le quartz entre les deux pins OSC1 et OSC2, et de mettre une petite capa entre chacune d'elles et la masse : j'ai mis 22 pF pour un quartz de 20 MHz. Voir le datasheet p. 27 pour quelques valeurs typiques.
Il faut ensuite faire bien attention au mode de fonctionnement choisi, entre XT (external resonator) et HS (high speed). Le choix dépend de la fréquence du quartz : en dessous de 4 MHz, prendre XT. Au-dessus, prendre HS. Si le mode n'est pas le bon, ça ne fonctionnera pas (j'en ai fait la malheureuse expérience !) Dans mon cas, j'ai donc dû choisir le mode HS.
Il existe ensuite plusieurs nuances. D'après ce que je comprends du §2.3, pour utiliser de l'USB faible vitesse, il faut que l'horloge du PIC soit à 24 MHz. Et avec un quartz de 20 MHz, la seule configuration possible est : utiliser une PLL qui prend en entrée du 4 MHz et fournit en sortie du 96 MHz. Pour cela, on doit commencer par diviser par 5 les 20 MHz pour l'entrée de la PLL, et diviser sa sortie par 4, ce qui nous donne les directives de configuration suivantes :
FOSC = HSPLL_HS
: mode oscillateur extérieur HS, PLL activée, HS utilisé pour l'USB ;PLLDIV = 5
: division par 5 de la fréquence avant la PLL (prescaler) ;CPUDIV = OSC3_PLL4
: division par 4 de la fréquence en sortie de la PLL (postscaler).
Pour le moment, j'arrive à faire clignoter deux LED, avec un oscillateur à quartz. Le montage peut être alimenté sur port USB. Je l'ai refait sur plaque à trous, ce qui peut éviter des soucis :
Sur la plaque à trous, on aperçoit au fond à gauche le connecteur ICSP (In-Circuit Serial Programming) qui permet de reprogrammer le PIC sans le déplacer.
Ressources (mise à jour 3 janvier 2008) :
- je fournis un programme de démonstration, bien commenté : blink20mhz.c
- un schéma pour la carte électronique est donné dans le billet « carte de test PIC18F/USB »
Commentaires
Salut, serais t'il possible que tu partages ton code source parce que j'ai un projet à faire sur un PIC18F2550. Allumer une LED depuis un programme sur le PC connecté par l'usb sauf que cela fait des mois que je galère et que rien ne marche (je n'ai jamais programmer de microcontroller et cela n'est pas aussi facile que je le pensais). Je croix que se sera mon dernier projet sur un microcontroller. En tout cas félicitation de ta performance pour ton PIC.
Bye.
Tres bien Christophe
j'aimerais essayer ton programme avec mon mini board
USB bit whacker (pic + usb + btn program et reset)
source ??? Mplab(asm) ou C.
Le programme de contrôle des LED par USB est détaillé sur ce billet : Carte de test PIC18F/USB
Le programme qui fait juste clignoter des LED est ici : blink20mhz.c
bonjour ,je suis un débutant en Electronique et j'aime bien maîtriser la programmation microcontrôleur PIC et j'ai beaucoup de question
1)pourquoi vous avez installez le quartz entres deux pins de osci ?
2)et quelle est le rôle de l'osc ?
3)quelles sont les notions de bases qu'il faut connaitre pour bien maîtriser la programmation microcontrôleur ??
et merci infiniment :)
Bonjour,
L'oscillateur fournit au microcontrôleur sa base de temps. C'est lui qui rythme tout le fonctionnement interne du microcontrôleur.
Pour savoir où monter le quartz, quelles capas ajouter, il faut lire la doc, un gros PDF disponible en ligne, régulièrement mis à jour par le fabricant.
Pour attaquer la programmation sur microcontrôleur, je dirais qu'il faut savoir programmer (en C ou en assembleur), il faut avoir des notions d'architecture des ordinateurs, et il faut lire la doc du microcontrôleur que l'on choisit...