Première étape : Faire clignoter une led en ASSEMBLEUR - Tout pour le débutant > Découverte + Ma première application de A à Z - Articles et téléchargements
Première étape : Faire clignoter une led en ASSEMBLEUR - Tout pour le débutant > Découverte + Ma première application de A à Z - Articles et téléchargements
Pseudo Pass se souvenir de moi     Créer un compte
ARTICLES et TELECHARGEMENTS ~ FORUMS ~ LIENS  
 
             
 
proposer
 
   
             
 
Catégories
 
   
             
 
Recherche
 
   
 

Première étape : Faire clignoter une led en ASSEMBLEUR

Publié par Anonymes le 10/07/2005 (9465 lectures)

  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)

  • 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. 

led1

Matériel 

Il vous faut :

  • Un µC MC9S08QG8 ou un MC9S08SH8 ou.. en boitier DIP
  • 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  :

led2

Le « pinout » du QG8 est donné dans la datasheet :

led3

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.


Concrètement, voici comment cela se présente :
led4

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 :
led5

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

led6

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 ».

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.

led7Pour terminer :

Enlevez le connecteur BDM, déconnectez la pile, puis reconnectez-là :


 La Led clignotte !!!

led8

Sur la photo ci-dessus, un USBDM miniature acheté sur Ebay.

Et maintenant ?

Pour approfondir l'assembleur, à lire :

  • 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.

Tags: Débutant   led   assembleur  


Fichiers liés à cet article
Nom de fichier Publié le Hits
Télécharger ce fichier compléments et le fichier ASM
.
10/07/2011 573

Article précédent Article suivant
MC9S08 à partir de zéro Article suivant
Les commentaires appartiennent à leurs auteurs. Nous ne sommes pas responsables de leur contenu.
Auteur Commentaire en débat
Powered by XOOPS© The XOOPS Project
Contacter les administrateurs

Première étape : Faire clignoter une led en ASSEMBLEUR - Tout pour le débutant > Découverte + Ma première application de A à Z - Articles et téléchargements