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 :

Montage électronique : avant Montage électronique : après

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) :