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