Première étape : Faire clignoter une led en

Transcription

Première étape : Faire clignoter une led en
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
Première étape : Faire clignoter une led en ASSEMBLEUR
Catégorie : Découverte + Ma première application de A à Z
Publié par Anonymes le 10/07/2005
Le présent article est une mise à jour du tutorial que Charly avait proposé avec un
MC68HC908 : « Une appli de A à Z ». Il est mis à jour dans le sens que nous
ferons cette (même) manipulation avec un MC9S08QG8 (ou MC9S08SH8),
composant plus récent et moderne qui utilise le top en matière de programmation :
le BDM.
L'objectif est de faire clignoter une led, avec un programme assembleur réduit au
minimum et sans IDE complexe type CodeWarrior, l'assembleur fonctionnant en
ligne de commande.
Nous supposons donc à ce stade que vous êtes l'heureux propriétaire d'un
debugger/programmateur USBDM, acheté (de 20 à 40€) ou fabriqué par
vous même comme cela est décrit ici.
L'assembleur MC9S08 est compatible avec celui du MC68705, MC68HC908. Bon, le
68HC11 a un accumulateur en plus (B), qui est en général, à ce que j'ai pu voir,
assez peu utilisé par les programmeurs ASM. Les amateurs de HC11 (actuellement
en fin de vie) passeront avec plaisir sur HC(S)08 qui est aussi performant parce que
malgré l'absence du deuxième accumulateur , il peut fonctionner à 25MHz et
possède des nouvelles instructions (division 16 par 8, move de mémoire à
mémoire).
Logiciel nécessaire.
Il vous faut :
- Vous rendre sur le site http://www.aspisys.com/asm8.htm En cliquant sur le
titre, vous téléchargerez le fichier « freeasm8.zip ». Ce fichier contient
diverses choses que vous aurez le temps de découvrir ultérieurement.
- Extrayez dans un dossier « asm8.exe » et « asm8.cfg » qui se trouve dans le
sous répertoire « Win32 ». Copiez également dans ce dossier le programme en
assembleur EssaiQG8.asm, qui se trouve dans le fichier "zip" joint à cet article
(et qui convient aussi si vous avez un MC9S08SH8)
Page 1 / 11
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
- Ouvrez une fenêtre DOS (cmd) et rendez-vous dans le dossier précédent.
Tapez la ligne de commande suivante: asm08.exe EssaiQG8.asm
Le programme génère alors un fichier EssaiQG8.lst, EssaiQG8.map et EssaiQG8.S19
. Ce « S19 » est le binaire qui sera programmé dans le µC. Le fichier .lst est un
listing complet de l'assemblage, avec adresses, code op, nombre de cycles,
utilisation de la mémoire, etc … Nous voyons ici par exemple que notre programme
fait environ 50 octets, tout compris, ce qui fait environ 1/200 ème de nos 8ko de
flash. Matériel Il vous faut :
- Un µC MC9S08QG8 ou un MC9S08SH8 ou.. en boitier DIP
Page 2 / 11
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
- Une résistance 330 Ohm
- Une led (pas une bleue, Vf est trop élevé)
- Un condensateur 100 nF
- Une plaque à trous (« breatboad ») d'expérimentation
- 2 piles 1,5V. Attention, le Vdd min du MC9S08SH8 est de 2,7V. Donc, des
batteries (1,25Vx2) risquent de fournir une tension un peu « juste ». Par
contre, pas de souci avec le QG8 (Vdd mini= 1,8V)
Programmation du µC
- Reliez 4 des 6 broches du connecteur de l'USBDM suivant le schéma suivant :

Page 3 / 11
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
Le « pinout » du QG8 est donné dans la datasheet :
Page 4 / 11
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
Il faudra donc relier les pins 1 (RESET), 2 (BKGD), 3 (Vdd=+3V) et 4 (Vss= masse)
au connecteur 6 pin du BDM.
La Led est reliée de PTB3 (pin n° 9 du QG8 et n° 13 du SH8) à la masse avec une
résistance de 330 Ohms en série. Vous pouvez relier la led à la masse ou au +Vdd
mais ne vous trompez pas dans la polarité : La patte la plus longue va au +.
- Branchez la pile (2x1,5V)
Remarque : Vous constatez que le +Vdd et la masse du montage « cible » sont
reliés au BDM. Est-ce le BDM qui alimente le montage ou le montage qui alimente le
BDM : Ni l'un ni l'autre, le + du montage est relié au BDM pour que le BDM
communique avec des signaux logiques de la bonne tension : si le µC cible est
alimenté en +5V, le BDM communiquera avec lui avec des signaux logiques de 5V.
Si il est alimenté en 2V, le BDM lui appliquera des signaux de 2V, etc..., et ceci
d'une manière tout à fait transparente pour l'utilisateur. Il faut donc que la pile soit
connectée pendant la programmation.
Page 5 / 11
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
Concrètement, voici comment cela se présente :

Remarquez le condensateur de 100nF, inséré près des pins Vdd /Vss du QG8. Ne
l'oubliez pas, sinon soucis assuré.
Vous pouvez aussi fabriquer un petit adaptateur, bien pratique et qui resservira
sûrement :

Page 6 / 11
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
Programmation
Dans le répertoire « Win32 » du fichier zip de l'USBDM téléchargé sur
http://sourceforge.net/projects/usbdm/files/ ( voir aussi ce qui concerne le
programamteur USBDM gratuit), il y a un sous-dossier « Utilities ». Décompressez le
dossier, dans « Utilities » lancez (cliquez sur) HCS08_FlashProgrammer.exe
Page 7 / 11
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
En cliquant sur « Load Hex Files » (de l'onglet « Target »), vous choisirez le fichier «
EssaiQG8.S19 » précédemment généré. Avec l'option « Trim Frequency » cochée, et
ayant choisi le « Device » (QG-MC9S08QG8) approprié cliquez sur « Program Flash
». Après quelques secondes, une fenêtre vous confirmera que toput s'est bien passé
et comme vous n'en avez pas d'autre à programmer, vous cliquerez sur « Non ».
Page 8 / 11
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
Remarque : il se peut que l'USBDM demande de couper l'alimentation du µC puis de
la remettre. Pas de souci, effectuez l'opération (enlevez un fil venant de la pile puis
remettez-le) puis cliquez sur « OK », cela fonctionnera normalement.
Pour terminer :
Enlevez le connecteur BDM, déconnectez la pile, puis reconnectez-là :
La Led clignotte !!!
Page 9 / 11
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
Sur la photo ci-dessus, un USBDM miniature acheté sur Ebay.
Et maintenant ?
Pour approfondir l'assembleur, à lire :
Page 10 / 11
68hc08.net
La communauté francophone d'entraide et partage en électronique programmable freescale
- Un cours Assembleur CPU08 (68HC08, MC9S08) en français dans le fichier zip
joint à cet article
- Le mode d'emploi ASM08, avec les fichiers de déclarations des périphériques «
.inc » et les exemples de macros/code - Le manuel de référence du CPU08 sur le site de Freescale - La Datasheet du µC pour apprendre les périphériques.
Ou bien CodeWarrior, pour passer au C avec un outil professionnel gratuit.
N'hésitez pas non plus à poser vos questions sur le forum, il est là pour cela et vous
aiderez les autres qui auront rencontré les mêmes difficultés que vous.
Page 11 / 11