LA PRATIQUE POUSSEE |
Les
microntrôleurs, ensembles intelligents et autonomes, sont de plus en plus
d'actualité avec le marché porteur de l'automobile.
Néanmoins, la mise en oeuvre reste souvenrt assez délicate car les platines de
développement et de programmation sont hors de
prix et de portée de tous. J'ai découvert chez le fabriquant microchip, une solution magique à base de
microcontrôleur...
tellement magique d'ailleurs, qu'elle sert à déplomber les playstations, fabriquer des
cartes pirates sattelites,...
Ce que je cherchais, c'était une puce qui soit reprogrammable facilement à volonté en C
, peu coûteuse, avec des outils de développement gratuits
afin de constituer mon mini système embarqué, la centrale domotique universelle qui
fonctionne avec un PC et/ou une HP ou rien du tout.
J'ai été très heureux de découvrir que non seulement le pic16F84 (8 bit CMOS EEPROM
micontroller, 1 kword flash, 68byte RAM ,64byte EEPROM)
nécéssitait d'aucune usine à gaz pour être programmé mais aussi que les outils de
développement , piclite C
ompiler, étaient gratuits et non bridés chez htsoft ,
(à visiter et à télécharger d'urgence donc.)
I - Partie hardware
J'ai fait mes premiers pas avec
le magnifique programmateur universel de JDM, pip02
- merci à toi JDM
. L'outil que j'utilise sur PC pour
programmer les puces est l'excellent
icprog dont je remercie l'auteur BONY GIJZEN pour sa superbe
interface graphique sous windows. Le programamteur de Jdm est
excellent car il permet aussi de programmer des eproms série 24cxx
sans avoir à alimenter le montage. Par contre, il est loin de donner
la possbilité de programmer les puces in situ comme annoncé. à cause
de la référence négative pour la masse . J'ai programmé de nombreux
pic 12c508 (programmable qu'une seule fois) pour construire mon
propre module uir. Je tiens à remercier ici l'auteur
original de cete prouesse technique, Ties
Bos.
Maintenant, comme je voulais éviter de sortir la puce de mon circuit
et la mettre sur le programmateur à chaque changement de programme,
j'ai optimisé le programmateur de jdm en s'inspirant de celui du
magazine electronique pratique bien que trop compliqué. La cerise
sur le gateau chez microchip, c'est que
tout programmateur pic peut programmer n'importe quelle autre microntrolleur
de ce fabriqant sous peu de rajouter un adaptateur de brochage.
Ci dessous, la partie composant
|
Le cable du haut est à connecter à un des ports série du PC
Le cable à mi hauteur est le cable J-TAG pour la programmation in situ
Le coupleur de pile en bas permet de se raccorder sur le secteur.et
d'alimenter le montage sous une tension supérieure à 12V . |
Conmément au pqui correspond au schéma électrique suivant:
Quelques remarques sont à apporter:
Le circuit est protégé contre les inversion de tension avec la diode D10. Le max232 a
deux canaux disponibles qui peuvent être récupérés via le connecteur JP2.
Le connecteur JTAG est un connecteuir HE10 (2*5 picots) avec détrompeur. Hormis le fait
qu'il véhicule les 3 signaux CLK, PROG et DATA utiles à la programmation du pic,
il peut alimenter le montage à programmer. Ce sera notre cas avec la carte cible PICSYS
décrite dans le chapitre qui suit. Quand le montage est alimenté par le connecteur JP3,
la led verte témoin s'allume. D'autre part , une fois la puce programmée il est
possible de lire état les deux fils
RB6 et RB5 au travers du programmateur.Lors de la programmation de la puce avec ICPROG, la
led rouge s'illumine et clignote.
Le programmateur est gêné lors de la programmation si au niveau
du montage cible, on a oublié de mettre des résistances de pull-up les entrées
d'interruptions que l'on utilise (sont concernées par ce problème les broches RB0, RB7,
RB6, RB5 ou RB4) sinon les laisser en l'air sur le circuit cible. En aucun cas, celles-ci
doivent être à l'état bas (pull down ou charge quelconque) sinon le microntrolleur pic
bloque de lui même la programmation, croyant que c'est une interruption qui arrive sur
l'un de ses ports. Dans un tel cas, la programmation échoue et un message d'erreur est
retourné au niveau d'ICPROG.(si l'on vérifie la programmation!)
Voici l'implantation des composants et le typon,
Note technique: Toutes mes typons ont été réalisés à
la main (question d'habitude et d'optimisation) et mis au propre sous Layo1e. Je
m'empresse donc de fournir le fichier lmc de routage picdev.lmc.
II -Partie software
Elle combine deux logiciels : piclite C ompiler, et
icprog (à downloader) . Le premier
est un cross compilateur C pour le PICC16X84, c'est à dire qu'il permet de compiler des
applicatifs en langage C sur un PC mais destinés à tourner sur ce type de
microcontrôleur. Le second permet d'envoyer le fichier compilé (ou binaire .hex) dans la
cible pour voir le résultat.
A) PICLITE:
L'interface ressemble à Borland C++ sous DOS . Quand on compile un fichier la première
fois (en pressant sur F3) sous piclite,
certaines questions sont posées au début :
-select midrange processor : choisir 16F84 (F=version Flash)
-select float type: 24 bit (pour moi, cela suffit)
-select computer optimization: Full (optimisation complète)
-select output format: Le format à choisir lors de la compilation sous piclite pour
rester compatible avec icprog est le format .hex intel.
-set map and symbol options: F4 - repondre par OK tout simplement sans rien changer.
Le compilateur vous génère à partir de votre fichier.c (s'il est correct
biensûr) , un fichier fichier.hex dans le même repertoire. C'est celui-ci
que l'on va télécharger dans le microcontrôleur grâce à notre programmateur PICDEV.
B) ICPROG
Avant de pouvoir l'utiliser, il faut définir en pressant F3, le port série sur
lequel vous avez raccordé le programmateur PICDEV sans oublier
de lui déclarer le type de programmateur (jdm programmer) . Ensuite, préciser le
type de puce à programmer comme suit:
Dans options du menu settings, cochez verify during programming
et décochez ask when programming.
Il suffit d'aller chercher votre fichier.hex (raccourci CTRL-O) puis de lancer la
programmation par F5. Si vous obtenez
une erreur du type "verify failed at adress xxx", c'est soit que:
1) votre programmateur n'est pas connecté au bon port, (essayez un autre port)
2) n'est pas correctement alimenté le programmateur (concerne PICDEV seulement) -
la led verte est elle alumée , pb de sens?
3) vous avez pas ommis de relier la cible au programmateur par l'interface J-TAG
4) vous avez un problème de pull-up comme mentionné plus haut au niveau de votre carte
cible.(la led rouge s'allume puis s'éteint
immédiatement)
Astuce:
Une alternative ultra rapide pour la programmation des pics 16F84
(6 secondes pour l'envoi dans la cible!!) est le programme DOS de JDM: pp2.exe. Il
suffit de l'interfacer avec piclite : sous le menu utility choisir define
user command et remplir comme suit:
Menu Entry |
Command string |
Upload |
pp2 16x84 P $(outfile) 1 |
Mon programmateur est sur le port COM1 du PC et le programme pp2.exe se trouve dans le même répertoire que
votre fichier .c compilé à télécharger.Maintenant, il suffit de faire ALT-F7 pour
uploader le programme dans la cible - nettement plus pratique pour le développement.
|