 |
PicDev:
Un Programmateur PIC avancé |
 |
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 souvent 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 module
uir. Merci à l'auteur original de cette 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 gâteau 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 . |
qui
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.
|