23 septembre 2012
Le but de cette série d’articles est de présenter une plateforme de développement relativement accessible. Seule la première étape nécessite un programmateur de PIC. Le reste ne demande que des composants standards peu onéreux. Afin de faciliter la re-programmation du microcontrôleur, nous lui installons un bootloader USB. Ceci limite grandement la gamme de PIC utilisable. Nous n’utilisons que des PIC 8bits USB, et même quasi uniquement des PIC 18F2550.
Cette solution est idéal pour un club de robotique. Une fois que le club a investi dans un programmateur de PIC (pour une petite vingtaine d’euro), chaque membre peut se construire sa plateforme de développement et la programmer chez lui.
Toute la chaine de développement, du flashage du microcontrôleur au logiciel d’interface avec le bootloader, en passant par les compilateurs, marche sous Windows. Il est tout à fait possible de travailler sous GNU/Linux sans impact sur le code.
Nous utilisons le programmateur de Lionel, décrit sur le site de Fribotte. Il s’agit d’un programmateur de la famille des JDM, cette information est utile pour la configuration du logiciel de flashage.
Un bootloader est un petit programme mis dans la mémoire du PIC. Ce programme est exécuté à chaque démarrage du PIC. Si une certaine condition est remplie (bouton appuyé, lien série établie...) le bootloader entre en mode re-programmation. Il attend que le PC lui envoie le programme qu’il enregistrera dans la mémoire du PIC. Si la condition n’est pas remplie, le bootloader laisse s’exécuter normalement le programme du PIC.
Il est alors possible de reprogrammer un microcontrôleur sans programmateur. Cependant, un programmateur est toujours nécessaire au moins une fois pour envoyer le bootloader au microcontrôleur.
Nous utilisons MCHPUSB, un bootloader USB de Microchip qui n’est plus distribué dans la version que nous utilisons. Les nouvelles versions sont tout à fait fonctionnelles, elles sont un petit peu plus gourmandes en espace mémoire. Changer de version aurait un impact (bien que minimes) sur la compatibilité avec les codes déjà écrits. Nous avons préférer garder la vieille version.
Le bootloader se trouve dans le paquet "Microchip Application Libraries", dans le répertoire "USB/Device - Bootloaders/MCHPUSB".
Attention : Le code n’est pas écrit pour un PIC 18F2550, mais pour un PIC 18F4550. Il faut changer le modèle de microcontrôleur utilisé et surtout vider de leur contenu les fonctions faisant clignoter les LEDs. Si vous en oubliez une, pas de panique, vous le verrez à la compilation. Le PIC 18F4550 dispose d’un port D dont le PIC 18F2550 est dépourvu. Les LEDs que le bootloader veut faire clignoter sont censées être sur le port D, d’où l’erreur lors de la compilation.
Le montage minimal pour un PIC est très simple, mais il ne permet pas de faire grand-chose
avec ce PIC. Ce montage consiste à relier :
Avec un tel montage, il faut bien configurer le PIC en lui indiquant :
Utiliser l’oscillateur interne du PIC impose une vitesse de fonctionnement lente et rend inutilisable le module USB qui nécessite une fréquence de 48 MHz obtenue par PLL (asservissement de phase)
La fonction reset du PIC est active par défaut, il serait dommage de se retrouver bloqué au début de la programmation à cause d’un PIC mal configuré. La fonction reset est aussi pratique pour redémarrer le PIC, activer le bootloader et ainsi reprogrammer la puce.
Ce n’est donc pas ce montage que nous utiliserons comme base. A ce montage, nous allons rajouter :
Les boutons doivent être câblés de telle manière qu’à leur position de repos, il y ait du +5V au niveau de la patte du PIC. Un condensateur est mis en parallèle du bouton pour limiter les effets de rebond.
WinPic800 permet de flasher le bootloader sur le PIC à l’aide du programmateur.
Développement : il faut installer la suite de développement de Microchip : MPLAB et le compilateur C de Microchip MCC18.
Microchip fournit PDSFUSB, un logiciel pour communiquer avec le bootloader.
Note : il existe un autre compilateur, développé par Hi Tech. Les notations pour accéder aux registres ne sont pas les mêmes, ce qui nuit à la compatibilité du code.
Picprog : permet de flasher le bootloader. Il est disponible dans les dépots de certaines distributions. Il est téléchargeable ici
Pour le développement, l’idée est d’utiliser MCC18 de Micronchip avec Wine. Ce n’est pas une usine à gaz. Il faut passer un peu de temps pour se créer un Makefile et tout marche tout seul. Le Makefile permet de se créer une commande pour programmer le microcontrôleur et avoir ainsi compilation et programmation du microcontrôleur en une commande.
L’idée est de se crée un makefile qui contient toutes les informations concernant le compilateur et un makefile spécifique au projet qui appelle le premier (voir les exemples joints).
Pour la programmation du microcontrôleur avec le bootloader, il y a fsusb.
Vous avez votre schéma de base et vous voulez rajouter un bouton, un voyant, un capteur ou un actionneur ? Votre arme ultime sera la page 4 de la fiche technique du PIC, avec ses schémas intitulés "Pin diagrams".
Comment ce schéma se lit-il ? Avec un lexique, ce n’est pas très compliqué. Chaque patte du PIC peut avoir plusieurs fonctions (à quelques exceptions près). Ces fonctions sont notées sur le schéma à côté de chaque patte du PIC.