Atmel AVR – Installation des outils de développement logiciel et matériel
« On ne connaît que les choses que l’on apprivoise. » Le petit prince – Antoine de Saint-Exupéry 1900-1944.
J’ai en réserve plusieurs projets à base de microcontrôleurs en lien avec l’émission-réception. Je relate dans cet article les étapes qui me permettent de dresser un atelier complet de développement et de faire mes premiers pas avec les microcontrôleurs AVR.
De ce premier contact avec AVR, les premiers mots qui me viennent à l’esprit sont: facilité, ouverture, gratuité. Facilité de mise en oeuvre, monde ouvert disposant d’une vaste bibliothèque de programmes et de nombreux outils open-source de développement gratuits dans différents langages. Un espace immense à explorer.
1. L’ oeuf ou la poule
Mon objectif est d’obtenir un atelier de développement complet à un coût très faible. De mon expérience avec les microcontrôleurs PIC, j’ en ai tiré que l’élément critique de la chaîne était le programmateur et son logiciel associé. La programmation in-situ (In-System Programming ou ISP) facilite la mise au point des circuits. Le port USB s’impose comme un standard et remplace les autres ports externes de nos PC. Réaliser son programmateur, l’acheter? Les programmateurs ISP USB légers, bon marché, faciles à réaliser comme l’ USBtinyISP ou l’ USBasp sont conçus autour d’un microcontrôleur et d’un programme embarqué. Il me faudrait d’abord câbler un petit programmateur sur port parallèle pour télécharger le firmware dans le microcontrôleur du futur programmateur. Un coup d’oeil sur Ebay me fait opter pour l’achat. L’USBtinyISP avec un câble USB, et un cable ISP est disponible pour moins de 10 euros frais de port inclus.
2. Caractéristiques de l’ USBtinyISP
La photo 1 ci-contre montre ce petit programmateur qui se présente sous la forme d’un circuit de 27mm x 57 mm, construit autour du microcontrôleur AVR ATTINY2313A-PU. Son entrée est un connecteur USB (USB type B dans mon cas). En sortie, 2 connecteurs ISP , l’un de 6 broches, l’autre de 10. Un strap permet le choisir l’alimentation du circuit à programmer soit par le port USB, soit par une alimentation extérieure. Le strap est en place pour l’alimentation par le port USB. Le modèle Pocket AVR Programmer vendu par sparkfun et le modèle USBtinyISP AVR Programmer Kit vendu par adafruit industries sont les mêmes. Voici un schéma de l’ USBtinyISP dont il existe plusieurs variantes.
Remarque: la suite de l’article traite uniquement de l’installation que j’ai réalisée sur Windows 7 64 bits.
3. Installation du driver de l’ USBtinyISP
C’est l’installation du driver qui m’a donné le plus de soucis. Quand on reçoit ce genre de circuit acheté sur Ebay, il est livré en général sans documentation ni aucun CD contenant les drivers. Il faut soit même chercher et croiser les doigts. Après plusieurs tentatives infructueuses, en fouillant le net j’ai trouvé une solution.
Ne pas brancher le programmateur tant que le driver n’est pas installé.
Etape 1 : télécharger et préparer le driver.
Télécharger les pilotes, le décompresser pour obtenir le répertoire pocketprog-driver.
Télécharger la dernière version des pilotes libusb-win32 depuis sourceforge, celle que j’ai téléchargée est la 1.2.6.0 du 17/01/2012, décompresser, pour obtenir le répertoire libusb-win32-bin-1.2.6.0.
Aller dans le répertoire libusb-win32-bin-1.2.6.0/bin/amd64.
Dans ce répertoire il y a 2 fichiers libusb0.dll et libusb0.sys,
Renommer ces fichiers respectivement libusb0_x64.dll et libusb0_x64.sys.
Copier ces 2 fichiers dans le répertoire pocketprog-driver, ils remplacent les 2 fichiers existants.
Etape 2 : installer le driver.
Ouvrir le menu Démarrer.
Clic droit sur Ordinateur.
Dans le menu, choisir Gérer.
Dans la fenêtre qui vient de s’ouvrir, colonne de gauche, cliquer sur gestionnaire de périphériques, vous obtenez dans la colonne du milieu un répertoire portant le nom de votre ordinateur avec dessous la liste de tous les périphériques.
Clic droit en haut sur le nom de votre ordinateur, dans le petit menu qui vient de s’ouvrir cliquer sur Ajouter un matériel d’ancienne génération.
La fenêtre de l’assistant Ajout de nouveau matériel s’ouvre, cliquer sur suivant.
Dans la fenêtre qui vient de s’ouvrir choisir l’installation manuelle,
Une liste de matériel s’affiche, n’en sélectionner aucun, cliquer sur suivant,
Dans la fenêtre qui vient de s’ouvrir, cliquer sur le bouton installation à partir d’un disque.
Dans la fenêtre qui vient de s’ouvrir, sélectionner dans le répertoire pocketprog-driver le fichier pocketprog.inf et cliquer sur OK.
Window vous prévient que le pilote n’est pas signé, continuer.
Dans la fenêtre suivante, cliquer sur suivant.
Un nouveau message d’avertissement de windows qui vous prévient que le pilote n’est pas signé, passer outre et continuer l’installation.
Une dernière fenêtre s’affiche qui indique que le pilote AVR Pocket Programmer a été installé.
Cliquer sur Terminer.
Etape 3 : vérifier.
Dans la liste des périphériques on trouve maintenant une ligne LibUSB-Win32 Devices.
En cliquant dessus, s’affiche dessous la ligne AVR Pocket Programmer.
Clic droit sur cette ligne donne l’état du périphérique.
4. Installation de WinAVR
WinAVR est un atelier complet de développement sous Windows regroupant tous les outils indispensables à la programmation C et assembleur, éditeur, débogueur, librairies. Il comprend aussi l’interface de programmation AVRdude qui permet le flashage du microcontrôleur en cours de programmation.
Télécharger la dernière version ici. La version que j’ai installée est la 2010-01-20. Suivre la procédure d’installation. Elle est rapide et sans problème.
5. Connexion de l’ USBtinyISP
Connecter le programmateur au PC à l’aide du câble USB,
Ne pas connecter pour l’ instant le cable ISP.
La LED verte du programmateur s’allume, le programmateur est alimenté.
Ouvrir une fenêtre d’invite de commande de façon suivante : dans le menu Démarrer, cliquer sur Tous les programmes, sur Accessoires, puis sur Invite de commandes.
Vérifier que AVRdude répond.
Dans la fenêtre invite de commandes, taper avrdude.
Si tout va bien il répond en donnant la liste des options comme le montre la photo 3 ci-contre.
Vérifier que le programmateur communique avec le PC.
Dans la fenêtre invite de commandes, taper
avrdude -c usbtiny -p m8
La petite LED rouge du programmateur cligne une fois.
La photo 4 ci-dessous montre le message qu’il faut obtenir. Cela indique que la connexion est bien établie mais que le dispositif, ici m8, pour ATMEGA8 n’est pas connecté. Normal puisqu’ aucun microcontrôleur à programmer n’est connecté à la ligne ISP. Bien entendu si vous compter utiliser un autre microcontrôleur, changer simplement le paramètre de l’option -p. La liste des dispositifs est donnée dans la documentation de avrdude. Mais le message obtenu sera le même.
6. Connexion de l’ USBtinyISP au dispositif à programmer
On se reportera utilement à la note AVR910 qui décrit le connecteur ISP.
Pour le test j’ai utilisé un ATMEGA8-16PU. Il s’agit de savoir si notre programmateur peut communiquer avec notre dispositif à programmer. Aucune alimentation n’est nécessaire, le dispositif à programmer est alimenté par le port USB via le programmateur. Aucun autre composant n’est utilisé. Pour ce faire :
Le programmateur reste connecté au PC via le port USB,
Sur une plaque d’essai, insérer le microcontrôleur,
Connecter le câble ISP 6 broches au programmateur,
Connecter l’autre extrémité du câble ISP au dispositif, les 6 lignes RST, VCC, GND, MOSI, MISO, SCK, aux bornes de l’ATMEGA8 respectivement (1), (7), (8), (17), (18), (19) .
Pour avoir une connexion solide du connecteur ISP à la plaque d’essai, j’ai réalisé un petit adaptateur avec une chute de plaque veroboard et 4 morceaux de 3 pins de barrette sécable, 2 x 3 pins qui s’enfichent sur la prise ISP, 2 x3 pins qui s’enfichent sur la plaque d’essai, photo 5 ci-dessous.
Dans la fenêtre invite de commandes, taper
avrdude -c usbtiny -p m8
La petite LED rouge du programmateur cligne une fois.
La photo 6 montre le message qu’il faut obtenir. Il indique que la connexion est bien établie.
7. Test de programmation
Il consiste à faire clignoter une LED. La fréquence de clignotement peut être modifiée en appuyant sur un bouton poussoir.
7.1. Matériel
Autour du microcontrôleur sont ajoutés 4 composants:
PORT B0, Une résistance de 330 ohms en série avec une LED dont la cathode est à la masse.
PORT B1, un bouton poussoir qui met le PORT à la masse quand on le presse.
En parallèle sur le bouton poussoir une capacité de 100 nF pour l’effet anti rebond.
7.2. Logiciel
Dans le répertoire WinAVR-20100110 cliquer sur Programmers Notepad
En haut dans la barre du menu, dans la liste déroulante choisir C/C++ .
Editer le programme
Vous trouverez en téléchargement le programme qui a servi aux tests. Il y en a aussi de multiples exemples du même genre sur le net. Si vous utilisez d’autres ports, il suffit de modifier le token-string de la macro define. (#define identifier token-string)
Dans votre répertoire de travail créer le répertoire LEDblink.
Enregistrer le programme en lui donnant le nom main.c .
Générer le MakeFile
Retourner dans le répertoire WinAVR-20100110 cliquer sur Mfile
Dans le menu de la fenêtre qui vient de s’ ouvrir, cliquer sur Makefile, puis sur MCU type, puis sur Atmega, et enfin choisir dans la liste atmega8.
De la même façon, dans le menu cliquer sur Makefile, puis sur Port, et enfin choisir dans la liste usb.
Toujours dans le menu cliquer sur Makefile, puis Enable Editing of Makefile .
Dans le menu cliquer sur Makefile, puis sur Programmer, cliquer sur le programmateur qui est déjà coché stk500v2, une ligne allumée en jaune s’affiche, remplacer dans la ligne stk500v2 par usbtiny. Il faut faire comme cela parce que usbtiny n’est pas encore prévu dans la liste. Nous verrons au paragraphe suivant comment l’ajouter automatiquement.
Dans le menu cliquer sur File, puis sur Save as, sélectionner le répertoire LEDblink, ne pas changer le nom Makefile, cliquer sur Enregistrer.
8. mfile le générateur de Makefile pour AVR GCC
WinAVR est livré avec mfile.tcl un générateur de fichier Makefile. mfile.tcl est écrit en langage de script Tcl (Tool Command Language). WinAVR est fourni avec les outils Tcl et Tk qui interprètent ce fichier. mfile.tcl s’appuie sur le template makefile_template.
Puisque je vais travailler avec le même programmateur qui n’y est pas actuellement prévu, je vais modifier mfile.tcl pour l’y ajouter ainsi que les valeurs par défaut de makefile_template.
Pour ce faire, aller dans le répertoire WinAVR-2010110/mfile.
Dans ce répertoire se trouve les fichiers makefile_template et mfile.tcl. Commençons d’abord par faire une copie de sécurité de ces 2 fichiers.
8.1. Modifier mfile.tcl
Avec votre éditeur préféré, Notepad++ aller à la ligne 711 dans la boucle foreach p ajouter usbtiny dans la liste déroulante. Sauvegarder.
8.2. Modifier makefile_template
Toujours avec votre éditeur préféré, Notepad++ aller à la ligne 277 AVRDUDE_PROGRAMMER remplacer stk500v2 par usbtiny.
Aller à la ligne 280 AVRDUDE_PORT = com1
Mettre cette ligne en commentaire # AVRDUDE_PORT = com1
Sous cette ligne ajouter AVRDUDE_PORT = usb
Vous pouvez, si vous le souhaitez, y ajouter des commentaires comme je l’ai fait.
Sauvegarder.
Télécharger tous les fichiers.
Références
SparkFun Electronics
NewbieHack.com
AVR910: In-System Programming
megaAVR Microcontrollers – Atmel Corporation
Tcl (Tool Command Language)
Index des articles de la catégorie microcontroleur
- Atmel AVR – Installation des outils de développement logiciel et matériel
- Fréquencemètre à microcontrôleur PIC
- Fréquencemètre à microcontrôleur PIC – Commande de l’afficheur LCD
- Fréquencemètre à microcontrôleur PIC – Description
- Fréquencemètre à microcontrôleur PIC – Mesure
- Fréquencemètre à microcontrôleur PIC – Réalisation
- Fréquencemètre à microcontrôleur PIC – Révision 1
- Fréquencemètre à microcontrôleur PIC – Structure du programme
- Mon premier projet PIC
- Mon premier projet PIC – Programmateur sur port parallèle
- PIC Microchip – Adaptateur pour programmer la série des PIC 12F629/675/683 et 12F1822/1840
- PIC Microchip – Application du 16F88 – Le Bootloader
- PIC Microchip – Installation de la nouvelle version WinPICPgm 1.8.3.0
- PIC Microchip – Manipulateur électronique 12F675 CW Keyer
- PIC Microchip – Manipulateur électronique 16F628 CW Keyer et son interface de liaison série