Programmer son PIC
Si vous avez lu la page de présentation vous devez normalement avoir les outils nécéssaires à la programmation d'un PIC. Vous trouverez dans les cours des exemples de programmes, ainsi que les code source (à compiler avec MPLAB et C18), et les fichiers .hex compilés qu'il vous suffit d'écrire dans votre PIC pour les tester. Mais comment "envoyer" le programme dans le PIC? Nous allons étudier deux méthodes dans ce cours : une utilisant un programmateur de PIC (cf rubrique présentation) et l'autre en utilisant un bootloader.
Programmer son PIC avec ICPROG
Vous devez connaitre ICPROG, ce fameux logiciel développé par Bonny Gijzen (cf partie présentation) vous deviendra vite indispensable! Téléchargez le et installez le si vous ne l'avez pas encore fait! Vous trouverez aussi sur le site de Kudelsko une page expliquant la manipulation à faire pour utiliser ICPROG sous Windows 2000 ou XP.
Une fois que c'est fait, il vous reste à paramètrer quelques options dans le logiciel, puis brancher votre programmateur sur le port série de votre PC (n'importe lequel, du moment que vous indiquez dans les options de ICPROG lequel vous utilisez). Voici une image du logiciel une fois lancé :
Le plus important, une fois la manipulation de Kudelsko faite, est de régler les paramètres hardware. Il vous suffit pour cela de cliquer sur le troisième bouton en partant de la gauche dans la barre d'outils, ce qui devrait vous ouvrir la fenêtre suivante :
Les choses importantes à régler sont :
- Le type de programmateur (JDM si vous utilisez l'un de ceux que je vous conseille dans la rubrique présentation
- Le port série que vous utilisez
- I/O delay : plus ce délai sera court, plus rapide sera la programmation, mais plus grand sera le risque d'échec lors de la programmation. Si jamais la programmation échoue, il vous faut la recommencer, donc à vous de tester les différentes valeurs de I/O delay et de voir celle qui vous convient le mieux.
Dans les paramètres software (quatrième bouton dans la barre d'outils) il y a quelques options qu'il vous sera peut-être utile d'activer (comme par exemple la vérification du code).
Il vous suffit ensuite d'ouvrir votre fichier .hex compilé (premier bouton de la barre d'outils, ou par le menu), puis de programmer le PIC en cliquant sur le sixième bouton en partant de la gauche.
A noter qu'il est possible, afin de ne pas devoir retirer le PIC de son circuit pour le placer sur le programmateur, puis de le replacer sur le circuit à la fin de la programmation, de faire de la programmation in situ : il suffit de relier les pins 1, 19, 20, 27 et 28 du programmateur directement au PIC dans son montage. Il faut néanmoins faire attention : le programmateur envoie une tension de 13,8V sur la patte 1 (qui est en utilisation normale reliée au +5V de l'alimentation du PIC), ce qui peut poser problème.
De la même manière si vous avez du +5V provenant du programmateur, et en même temps de l'alimentation de votre PIC, encore une fois celà peut poser problème. Et de même pour les pins 27 et 28 de votre pic qui correspondent aux pins 6 et 7 du port B : si vous utilisez ces deux pins dans votre programme, il pourrait être gênant de recevoir dessus une tension de +5V...
Je suis loin d'être un expert en électronique, je ne vous en dirais pas plus, je vous mets simplement en garde!
Programmer son PIC avec un bootloader
La technique de programmation avec ICPROG et un programmateur JDM marche très bien, mais elle est très
pénible (si si, vous verrez, quand vous devrez répéter plusieurs fois les gestes suivants : ôter le PIC du circuit,
sans casser aucune patte, le mettre sur le programmateur JDM, envoyer le programme avec ICPROG, attendre une minute
que cela soit fait, ôter le PIC du programmateur (toujours sans casser aucune patte) pour le remettre sur le circuit,
tester, voir que celà ne fonctionne pas, recommencer... etc).
La solution? Utiliser un bootloader! Vous en trouverez un sur le site de l'équipe
E=MeuhMeuh dans la rubrique "Fichier divers>technique>technique>coupe 2004".
Voici un lien direct vers le bootloader en question :
ici.
Les avantages d'un bootloader sont :
- Grande rapidité! il faut de l'ordre de 10 secondes pour programmer la totalité de la mémoire sur un PIC18F252 contre une bonne minute (selon le I/O delay) avec ICPROG
- Très pratique! Fini les pattes arrachées, les pins enfoncés dans le pouce etc... il suffit de tirer trois fils (masse, RX et TX) de votre circuit, et c'est tout!
Le principe du bootloader est de programmer le PIC avec ICPROG et le programmateur JDM une et une seule fois : on envoie le code du bootloader qui va, lors du démarrage du PIC, scruter le port série de ce PIC. Si il détecte qu'il y a un PC connecté dessus, avec le programme DownloaderPic en attente d'écriture, il va recevoir le fichier .hex envoyé et l'écrire dans la mémoire du PIC. Votre PIC sera ainsi programmé sans le retirer du circuit, juste en reliant son port série à celui du PC par le biais d'un MAX232. Vous trouverez un schéma sur cette page (ATTENTION il y a une erreur dans le schéma : le condensateur relié sur la patte 6 du MAX232 doit être inversée par rapport à ce qui est indiqué). Ce site présente d'ailleurs un autre bootloader très connu : le bootloader JOLT qui est très bien documenté. Il est plus complet et plus puissant que celui fourni par l'équipe E=MeuhMeuh, mais il est aussi plus complexe.
Voici la procédure détaillée pour le bootloader des E=MeuhMeuh :
- Programmer le PIc avec ICPROG et le programmateur JDM. Le fichier qu'il nous faut programmer est (dans notre cas, avec un pic18f252 avec un quartz de 10Mhz et le PLL activé) le fichier "18fxx2_8-40MHz-PLL1-56Kbps.HEX"
- Replacer le PIC dans son circuit
- Relier le RX du pic (pin 18) au TX du PC (pin 3 du connecteur DB9) (*)
- Relier le TX du pic (pin 17) au RX du pc (pin 2 du connecteur DB9) (*)
- Ne surtout pas oublier de connecter la masse de l'alimentation du PIC à la masse du pc! (pin 5 du connecteur DB9).
- Lancer le programme de download fourni avec le bootloader, choisir le bon port com, sélectionner 56k (en effet, le fichier .hex que nous avons programmé avec ICPROG est configuré pour une communication à 56k), puis cliquer sur "Write"
- Reset le PIC (couper et relancer son alimentation par exemple)
- Au bout de quelques instants, le programme de download fourni avec le bootloader devrait montrer la progression du download, puis indiquer "ALL OK!"
- Après une ou deux secondes, le pic devrait être automatiquement reset par le programme de download, ce qui devrait exécuter le programme que vous avez envoyé (par exemple le clignotement d'une LED) devrait s'exécuter
(*) : Les pins RX et TX sont à relier aux pins 3 et 2 d'un connecteur DB9 relié à un port série de votre PC par le biais d'un montage à base de MAX232. En effet, la communication série du pic délivre et lit des tensions entre 0V et 5V, alors que la communication série sur un PC délivre et lit des tensions entre -12V et +12V ! Il faut donc un montage "adaptant" les signaux afin que PIC et PC puissent communiquer sans encombres.
/!\ ATTENTION !, n'oubliez pas de mettre toutes vos masses en commun, celle du PIC, celle du PC et celle de l'alimentation du MAX232 si elle est différente de celle de votre PIC ! Si vous ne le faites pas, votre communication a toutes les chances de ne pas marcher, au mieux elle fonctionnera très mal.
Si le download ne se déroule pas correctement, vérifiez votre montage et vos branchements, ainsi que l'écriture du programme du bootloader avec ICPROG.
Voilà, vous savez envoyer votre programme au PIC! Vous pouvez dès a présent passer au premier cours très simple qui vous montrera comment faire clignoter une LED.