Un programmateur de PIC universel



Cet appareil est un système de programmation complet pour tous les microcontrôleurs Microchip à mémoire programme de type “flash”, électriquement effaçable. La platine dispose de quelques ressources (poussoirs, LE) pour vérifier le fonctionnement des programmes les plus simples. Le logiciel sur CDROM est compatible avec tous les SE WINDOWS.

Caractéristiques techniques :
• Adapté à la programmation des microcontrôleurs Microchip® FLASH PIC™
• Supporte quatre formats divers : 2 x 4, 2 x 7, 2 x 9 et 2 x 14 broches
• Quatre poussoirs et six LED pour expérimenter les programmes les plus simples
• Se connecte facilement à tout ordinateur par le port sériel
• Inclut un microcontrôleur PIC16F627 pouvant être reprogrammé jusqu’à mille fois
• Logiciel de compilation et de programmation fourni
• Alimentation : 12 à 15 Vcc, minimum 300 mA, non stabilisée
• PC compatible IBM, Pentium ou supérieur, avec Windows™ 95/98/ME/NT/2000/XP, CD-ROM et un port sériel RS232 libre (câble sériel non inclus)
• Supporte les familles suivantes de micro FLASH :
PIC12F629, PIC12F675, PIC16F83, PIC16F84(A), PIC16F871, PIC16F872, PIC16F873, PIC16F874, PIC16F876, PIC16F627(A), PIC16F628(A), PIC16F630, etc.
• Dimensions : 145 mm x 100 mm.

Le montage décrit ici est un programmateur multifonction apte à programmer tous (ou presque) les microcontrôleurs Microchip à mémoire programme de type “fl ash”, c’est-à-dire effaçables électriquement. Il s’agit bien sûr de la famille PIC, les microcontrôleurs programmables à 8 bits les plus réputés chez les passionnés d’électronique.
L’emploi d’une “fl ash” pour la mémorisation du programme a rendu beaucoup plus facile et rapide le développement du programme résident (“fi rmware”).

Le schéma électrique
Le régulateur VR1 produit, à partir de la tension d’entrée (12 à 15 V non stabilisés) la tension de programmation de 13,5 Vpp utilisée pendant la phase de programmation des microcontrôleurs. La tension de sortie du régulateur est plus haute que sa tension nominale car on a monté deux diodes entre sa broche GND et la masse. Le second régulateur, part de cette tension Vpp, et fournit le 5 V stabilisé nécessaire au fonctionnement du circuit et du micro en programmation. LD3 s’allume pour signaler que l’appareil est alimenté. Pour l’envoi des données de l’ordinateur au programmateur, on se sert de la ligne sérielle (connecteur DB9). Les lignes RTS et DTR sont utilisées pour l’envoi du signal d’horloge et des données TX, CTS et RI pour vérifi er et/ou contrôler l’état de la programmation.
Avec le double inverseur SW5, nous choisissons le mode de fonctionnement parmi les différentes possibilités : “Stand-by”, “Program” et “Run”. Dans le premier cas, aucune tension d’alimentation ou de programmation n’est fournie aux supports et donc le PIC à programmer peut être inséré ou déposé. Sur “Program”, en revanche, SW5B alimente le microcontrôleur en 5 V. La présence de cette tension est soulignée par LD9 (qui nous informe qu’on ne peut ni insérer ni enlever un PIC de son support avant d’avoir basculé l’inverseur sur “Stand-by”). La section SW5A, en revanche, relie la tension de 13,5 V aux broches MCLR des supports, de façon à permettre la programmation du micro. La section contrôlant la ligne 13,5 V correspond à T4 et T5 : le premier, piloté par les lignes RX et RI de la sérielle, habilite la tension quand cela est nécessaire et le second correspond au circuit de signalisation contrôlant LD8, dont l’allumage nous avertit que la programmation de la mémoire “fl ash” est en cours. En position “Run”, enfi n, le micro est alimenté normalement, ce qui nous donne la possibilité de vérifi er il programme mémorisé (avec les poussoirs et les LED situés à droite de la platine, fi gure 3). Dans ce cas, pour réinitialiser l’appareil, il faut de presser SW6.
En ce qui concerne le circuit d’horloge constitué de Q1 et de C6 et C7, il est possible, au moyen de “straps”, de relier cette section aux broches OSC1 et OSC2 des différents supports, ceci dans le cas où l’on prévoit d’employer un oscillateur externe. Pour les PIC à 8 broches on ne peut utiliser que l’oscillateur interne et donc il n’est pas possible d’utiliser la connexion au circuit d’horloge.
Les poussoirs et les LED à droite de la platine (voir figure 3) correspondent à des ports d’I / O spécifiques, comme le montre la figure 8 et permettent de tester des programmes simples.
Pour les supports à 18 et 28 broches, il est possible de relier au micro toutes les ressources disponibles, car ces PIC ont un nombre de ports suffisant. Pour les 2 x 7 broches on utilise seulement sept lignes (5 LED et 2 poussoirs) et pour les PIC à 8 broches les lignes sont au nombre de trois seulement (deux LED et un poussoir).
Bien sûr, si l’on utilise l’appareil comme platine d’essais, il faut se référer aux lignes indiquées pour profi ter de ces ressources (poussoirs et LED).
La prise à 5 pôles est utilisée pour programmer des microcontrôleurs non directement montés sur le programmateur.

Figure 1 : Schéma électrique du programmateur de PIC.

Figure 2a : Schéma d’implantation des composants du programmateur de PIC.

Figure 2b-1 : Dessin, à l’échelle 1, du circuit imprimé double face à trous métallisés du programmateur de PIC, côté soudures.

Figure 2b-2 : Dessin, à l’échelle 1, du circuit imprimé double face à trous métallisés du programmateur de PIC, côté composants.

Liste des composants
R1 .... 15 kΩ
R2 .... 220 kΩ
R3 .... 4,7 kΩ
R4 .... 1 kΩ
R5 .... 15 kΩ
R6 .... 220 kΩ
R7 .... 4,7 kΩ
R8 .... 1 kΩ
R9 .... 4,7 kΩ
R10 ... 3,3 kΩ
R11 ... 4,7 kΩ
R12 ... 330 Ω
R13 ... 15 kΩ
R14 ... 3,3 kΩ
R15 ... 3,3 kΩ
R16 ... 1 kΩ
R17 ... 10 kΩ
R18 ... 10 kΩ
R19 ... 680 Ω
R20 ... 680 Ω
R21 ... 680 Ω
R22 ... 680 Ω
R23 ... 680 Ω
R24 ... 680 Ω
R25 ... 680 Ω
R26 ... 10 kΩ
R27 ... 10 kΩ
R28 ... 10 kΩ
R29 ... 1 kΩ
R30 ... 10 kΩ
R31 ... 3,3 kΩ
C1 .... 220 μF 35 V électrolytique
C2 .... 100 nF multicouche
C3 .... 100 nF multicouche
C4 .... 100 nF multicouche
C6 .... 18 pF céramique
C7 .... 18 pF céramique
C8 .... 100 nF multicouche
D1 .... 1N4007
D2 .... 1N4148
D3 .... 1N4148
D4 .... 1N4148
D5 .... 1N4148
D6 .... 1N4148
D7 .... 1N4148
ZD1 .. zener 8,2V
VR1 .. 78L12
VR2 .. 78L05
LD1 .. LE 3 mm rouge
LD2 .. LE 3 mm rouge
LD3 .. LE 3 mm rouge
LD4 .. LE 3 mm rouge
LD5 .. LE 3 mm rouge
LD6 .. LE 3 mm rouge
LD7 .. LE 3 mm rouge
LD8 .. LE 3 mm rouge
LD9 .. LE 5 mm rouge
X1..... quartz 4 MHz
T1..... BC547
T2..... BC547
T3..... BC557
T4..... BC547
T5..... BC547
SW1.. micropoussoir
SW2.. micropoussoir
SW3.. micropoussoir
SW4.. micropoussoir
SW5.. inverseur trois voies
SW6.. micropoussoir

Divers :
1 . prise d’alimentation
1 . barrette mâle 17 pôles
1 . support 2 x 4
1 . support 2 x 7
1 support 2 x 8
1 . support 2 x 14
1 . connecteur RS232 femelle
Sauf spécifi cation contraire, toutes les résistances sont des 1/4 W à 5 %.


Figure 3 : Photo d’un des prototypes du programmateur de PIC.

A droite, les quatre poussoirs et les six LED permettent de tester les programmes les plus simples.

Figure 4 : Contrôles et signalisation.

La photo montre toutes les prises d’entrée / sortie, les LED de signalisation et les divers contrôles. Le PIC à programmer est à insérer dans un des quatre supports. Au moyen des quatre poussoirs et des six LED de droite, il est possible de tester les programmes les plus simples. Pour alimenter le programmateur, on se sert d’un adaptateur bloc secteur 230 V fournissant une tension non stabilisée de 12 à 15 V.

La programmation “in-circuit”
Avec cette technique il est possible de programmer, effacer et reprogrammer n’importe quel micro “fl ash” déjà monté dans son circuit défi nitif sans avoir à le dessouder (voir fi gure 5).
Cela permet de programmer des PIC dont le brochage ne correspond à aucun des supports disponibles sur le programmateur (par exemple le PIC16F876). La programmation “in-circuit”, toutefois, demande des précautions spéciales concernant l’alimentation et les ports RB6 et RB7, au moyen desquels la programmation est effectuée : quand on conçoit et réalise le montage fi nal sur lequel le microcontrôleur travaillera, il faut prévoir deux diodes supplémentaires et deux résistances, comme le montre la fi gure 5.
La diode sur l’alimentation fait que la tension VDD (+5 V) provenant du programmateur alimente exclusivement le micro et non le reste du circuit.
Le même concept vaut pour la tension de VPP laquelle, grâce à la résistance et à la diode reliées à la broche MCLR, peut arriver à la borne de programme et non aux autres composants entourant le micro. En ce qui concerne les deux ports utilisés pour la programmation (RB6 et RB7, respectivement entrée d’horloge et connexion données input/output), ces I/O sont employés aussi à d’autres usages (piloter une LED, lire un niveau logique, etc.). Pour éviter que, durant la programmation, ces circuits ne puissent “charger” excessivement la sortie de notre appareil, il est nécessaire de prévoir deux résistances de découplage d’au moins 1 kilohm entre les broches du micro et le reste du circuit.
Sur la platine où est monté le micro, nous pouvons par conséquent prévoir un connecteur à 5 pôles (ne pas oublier la masse !) et une nappe pour la relier au programmateur.

Figure 5 : La programmation “in-circuit”.

Notre appareil peut être utilisé aussi
pour la programmation “in-circuit”, c’està-dire pour programmer un microcontrôleur déjà monté sur une platine, sans avoir à le dessouder. Dans ce cas, toutefois, il est nécessaire de prendre les quelques précautions qu’indique le schéma ci-contre (il s’agit d’éviter que la connexion du programmateur n’occasionne des problèmes matériels).

Figure 6 : Les phases de programmation.

Quand le programme est écrit et compilé et qu’on a ainsi le fi chier .HEX, on peut procéder à la programmation physique du microcontrôleur à l’aide de l’appareil et du logiciel PROGPIC2.EXE dont voici les principales caractéristiques.

Figure 7 : La procédure de programmation des PIC.

La procédure de programmation d’un microcontrôleur commence toujours par l’écriture du programme qui peut être faite au moyen d’un “word processor” ASCII de n’importe quel type (par exemple NotePAD, compris dans le pack standard de Microsoft Windows, voir a). Il est possible aussi d’utiliser le pack de développement MPLAB Microchip, pouvant être chargé sur le site www.microchip.com.
Cette première phase terminée, il faut compiler le programme, c’est-à-dire convertir le “listing” écrit dans un langage compréhensible en code machine.
Pour cela, nous pouvons nous servir du programme MPASMWIN.EXE présent dans le CD fourni avec le kit (b). A partir de l’écran principal, nous pouvons sélectionner tous les paramètres nécessaires pour cela :
1. Sélectionner le nom et le parcours du programme source.
2. Sélectionner le format du code machine que l’on veut produire (habituellement ‘HEXADECIMAL’).
3. Cocher cette option si l’on veut que les fautes d’orthographe des variables soient contrôlées.
4. Choisir le type de messages d’erreur que le programme doit produire (habituellement “Error Only”).
5. Choisir un type de fonctionnement pour la fonction Macro Expansion (dans le paramétrage ‘ON’ les macro sont compilées dans le fichier LIST - xxx.LIST).
6. Sélectionner la longueur (en octet) du mot. Dans notre cas paramétrer toujours ‘INHX8M’ : d’autres choix donneraient lieu à un code machine illisible et ne fonctionnant pas.
7. Sélectionner les fichiers que l’on veut produire pour les ajouter au code machine HEX. Ne jamais sélectionner les options “Cross Reference” et “Object” car elles sont incompatibles avec ce programmateur.
8. Sélectionner le microprocesseur utilisé.
9. Indiquer la largeur de colonne (nombre de caractères) dans les fichiers de texte produits.
Il est alors possible de cliquer sur et si tous les paramètres sont corrects et s’il n’y a pas d’erreur de code source, l’écran (c) apparaît. Le programme Assembleur produit les fi chiers suivants : .HEX est le fi chier contenant les codes opérationnels à envoyer au PIC à travers le programmateur.
.LST est un fi chier de texte où se trouvent la source et la traduction correspondante en opcode. Il n’est pas utilisable pour la programmation du PIC mais il est très utile pour vérifi er les processus de compilation.
.ERR contient la liste des erreurs de compilation rencontrées et le numéro de ligne à l’intérieur de la source où elles ont été trouvées.
.COD fi chier du code utilisé uniquement dans l’environnement de programmation.
Seul le fi chier .HEX est utilisé réellement pour programmer le PIC. Voyons comment.
Le code machine (fi chier .HEX) est mémorisé dans le processeur à travers le PC et la platine de programmation en utilisant le logiciel PROGPIC2.EXE. Pour cela, il est nécessaire de :
- relier la platine de programmation au PC à travers le port sériel libre en pensant que la ligne IRQ de ce port sériel (IRQ 3 ou 4) ne doit pas être utilisée par un autre dispositif (par exemple un modem interne) ;
- relier l’alimentation et vérifier que LD7 s’allume ;
- lancer le programme ‘PROGPIC2, PIC programmer’ et cliquer sur ‘FILE’ -> ‘OPEN’ et sélectionner le programme compilé (Hex file 8M) que l’on veut programmer (d).
Alors, à l’aide de l’écran (e), il faut contrôler les divers paramètres :
1. Paramétrer le numéro du port sériel auquel est relié le programmateur.
2. Cocher pour mémoriser le code (normalement ON).
3. Cocher pour mémoriser les données EEPROM (normalement ON).
4. Cocher pour mémoriser les paramètres de configuration (normalement ON).
5. Cocher si l’on veut effacer complètement le micro avant de procéder à l’écriture (normalement ON).
6. Cocher pour effectuer la programmation en basse tension (ne pas sélectionner : notre platine utilise une tension de programmation VPP de 13 V et non de 5 V).
7. Sélectionner le microcontrôleur utilisé.
Durant les premiers essais, utiliser le micro fourni comme accessoire (un PIC16F627 ou un PIC16F627A). S’assurer toujours que l’on a bien sélectionné le sigle exact.
8. Utiliser pour les définitions/confi gurations du microcontrôleur, si elles n’ont pas déjà été définies dans le programme source (comme cela se passe souvent).
Il faut alors s’assurer que l’inverseur SW5 se trouve bien dans la position centrale (“standby”). Nous pouvons ensuite insérer le microcontrôleur dans le support adapté :
- utiliser le support IC1 si l’on veut programmer un PIC à 2 x 4 broches
- utiliser le support IC2 si l’on veut programmer un PIC à 2 x 7 broches
- utiliser le support IC3 si l’on veut programmer un PIC à 2 x 9 broches
- utiliser le support IC4 si l’on veut programmer un PIC à 2 x 14 broches
Il faut ensuite mettre SW5 en position “PROG” : LD9 commence à clignoter pour signaler qu’à partir de ce moment on ne peut plus ni insérer ni enlever le microcontrôleur du support. Si l’on clique sur “WRITE” le micro sera programmé.
Cette action est visualisée dans la fenêtre “ACTIVITY” et LD8 (“READ/WRITE”) clignote pendant toute la phase d’écriture.
Une fois terminée la programmation, mettez SW5 en position centrale (“STANDBY”) : c’est seulement maintenant que vous pouvez récupérer le micro ou passer en mode essai (voir les poussoirs d’essai et les LED de diagnostic du menu “Experiments”).
Si le programme a été écrit pour être utilisé avec les ressources présentes sur la platine (poussoirs et LED), il est alors possible de tester le PIC programmé en mettant SW5 sur “RUN”.
Voyons maintenant (f) les fonctions correspondant aux diverses commandes disponibles :
1. “Read all” : cette fonction permet de réclamer le programme présent dans le micro s’il n’est pas protégé (le code machine hexadécimal est sauvegardé dans un fichier de texte). Les PIC pour lesquels le bit de protection a été activé peuvent seulement être effacés.
2. “Write” : permet de programmer le micro. Pour utiliser cette fonction, il est nécessaire de mettre SW5 sur “PROG”. On peut surveiller ce processus dans la fenêtre “ACTIVITY”. LD8 (“READ/ WRITE”) clignote durant cette phase.
3. “Verify Code” : permet de vérifier si le micro a été programmé correctement. Cette opération peut être effectuée exclusivement si le micro n’est pas protégé en lecture. SW5 doit être en position “PROG”.
4. “Data Window” : permet à l’usager de visualiser et modifier les données mémorisées dans l’EEPROM du micro.
5. “Spee” : permet de modifier la vitesse de la programmation en l’adaptant aux caractéristiques du PC utilisé. Habituellement, on la met en position NORMAL.
6. “Activity” : indique le nom du fichier chargé en mémoire utilisé pour la programmation.
7. “Current File” : permet de voir quelle adresse ou aire d’adresses est utilisée par le programme pour lire ou écrire.

Figure 8 : Connexions des broches de I / O.

Le tableau donne les numéros des broches des divers supports auxquels sont connectés les quatre poussoirs et les six LED utilisés pour vérifi er le fonctionnement des programmes les plus simples. A chaque broche correspond bien sûr un port de I / O variant selon le support pris en compte.

La réalisation pratique
Quand vous êtes en possession du circuit imprimé double face à trous métallisés (dessins, à l’échelle 1, des deux faces fi gure 2b-1 et 2), montez tous les composants comme le montre la fi gure 2a (en vous aidant de la fi gure 3 et de la liste des composants) et vous ne devriez pas rencontrer de problème pour construire ce programmateur. Montez en premier les supports pour les PIC à programmer (vérifi ez bien vos soudures : ni court-circuit entre pistes ou pastilles ni soudure froide collée) et en dernier la prise d’alimentation et le connecteur DB9.

Les essais et l’utilisation
Le câblage étant terminé, alimentez le circuit avec le bloc secteur 230 V fournissant de 12 à 15 Vcc sous au moins 300 mA. Avec un multimètre vérifi ez la présence d’une tension de 13,5 V (entre 12 et 14 V) en aval du régulateur VR1 et de 5 V en aval du régulateur VR2. LD3 signale que la platine est alimentée.
Coupez l’alimentation, mettez SW5 sur “Stand-by” et reliez avec un câble sériel à 9 pôles (direct, non croisé) le programmateur au PC (qui pendant ce temps doit être éteint). Rallumez le programmateur et l’ordinateur et chargez sur ce dernier les programmes fournis avec le kit Microchip (le plus important est le logiciel de programmation nommé PIC Programmer).
En ce qui concerne le matériel, insérez tout d’abord le micro dans le support adapté et, si nécessaire, mettez les “straps” pour le circuit d’horloge.
Si les dimensions du PIC à programmer ne correspondent pas aux supports disponibles, vous pouvez toujours utiliser un support ou une platine externe et recourir à la programmation “in-circuit”.
Pour programmer le micro, il est nécessaire, avant d’envoyer les données avec le PC, de mettre SW5 sur “PROG” : cette configuration est signalée par l’allumage de LD9 (elle nous informe que le micro est prêt pour la programmation).
Durant la programmation proprement dite (ou la lecture des données du micro), LD8 s’allume pour signaler que la programmation est en cours : donc pendant cette phase le microcontrôleur ne doit pas être enlevé de son support.
Pour vérifi er le programme résident, SW5 doit être mis sur “RUN”.
Dans ce cas, l’appareil est alimenté par la tension de travail de 5 V et sur la broche MCLR est appliqué un niveau logique haut grâce à R15 reliée, elle aussi, au 5 V.
L’utilisation des poussoirs et des LED pour vérifi er le programme résident n’a de sens que dans la mesure où l’on a (correctement) utilisé les ports auxquels ces composants sont reliés (autrement dit si, par exemple, nous voulons faire clignoter une LED à une fréquence déterminée, nous devons utiliser le port GP2 (broche 5) dans le cas du micro à 8 broches, le port RC0 (broche 10) dans le cas du 14 broches, le port RB0 (broche 6) pour le 18 broches et, enfi n, le por t RA0 (broche 2) pour le 28 broches.
Ainsi, si le programme ne présente pas d’erreur, LD1 clignote. De même, si nous voulons que notre microcontrôleur lise le niveau logique du poussoir SW1, le programme devra utiliser les ports GP5 (broche 2) ou RC5 (broche 5) ou RA0 (broche 17) ou RB0 (broche 21) en fonction du type de micro utilisé.
Le logiciel nécessaire pour la compilation des programmes et la programmation des micro est disponible sur CD.
Ce dernier contient aussi de nombreux exemples d’applications et les “data-sheet” des principaux microcontrôleurs “fl ash”, un manuel d’utilisation interactif et toutes les informations matérielles/logicielles sur les PIC et sur les procédures de programmation.
Les fi gures 5 et 6 analysent toutes les phases de cette programmation.
Le PIC16F627 fourni permet d’effectuer les premiers essais de programmation : ce microcontrôleur dispose d’une mémoire “fl ash” de 1 ko, 225 octets de RAM, 128 octets d’EEPROM ainsi que 16 ports d’I / 0.

À Découvrir

Schema Electronique