Date de création: 21.07.2001
Rubrique du:
Auteur(s): hpbaby
Navigation: precedent principal suivant
Version:     FR

Voir en: 1024*768

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                                 

picdev_inside_compo.jpg (43961 bytes)

picdev_side.jpg (22659 bytes)

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:

picdev-schematic.jpg (135211 bytes)
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,

picdev-implantation.jpg (85122 bytes) picdev-typon.JPG (57919 bytes)

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:

piclite.jpg (72696 bytes)



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:

icprog.jpg (126782 bytes)

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.









Lab48 :

Oscilloscope pour HP et
générateur de signaux +5/-5V
 
ou centrale domotique de
8 Entrées/ Sorties Numériques
Hpmodem :
Dialoguer par voie hertzienne entre
2 HP - nécessite des alimentations externes
.
Hptalk:
Faire épeller des lettres de l'alphabet à l'aide d'un synthétiseur vocal type ISD
 

HpDomotic :
1)Construire son programmateur PIC (picdev)
2)Construire son interface domotique  (picsys)
3)Le module Infrarouge multiusage