La programmation d’un micro-contrôleur Atmel AVR en mode "in situ" ou ISP nécessite trois étapes :
– la rédaction du code source
– la compilation si le langage source le nécessite (C, Java)
– le flashage de la mémoire de la puce avec le programme machine
Cette dernière étape peut être réalisée de plusieurs manières :
– depuis la ligne de commande (par ex avec avrdude)
– depuis un logiciel spécifique à la carte
– depuis un logiciel de développement intégré (IDE)
La solution que nous présentons ici est un mélange des deux premiers : c’est bien avrdude qui va faire le transfert (le flashage), mais on le fera à travers une interface graphique appelée AVR Burn-O-Mat.
Le point de départ ne change pas : il faut avoir généré le programme en langage machine, dans notre cas on utilise le format .hex (Intel).
Téléchargement
Il faut :
– Java (JRE ou JDK)
– avrdude (déjà installé avec WinAVR si vous l’avez)
– le logiciel AVR Burn-o-mat
Installation
Pour Windows, vous disposez sur le site officiel d’un exécutable, l’installation est donc très facile. Cependant il faudra le configurer la première fois, et à chaque changement de carte ou d’ordinateur.
Pour GNU/Linux (Ubuntu ou Debian), il y a un paquet .deb à télécharger, mais nous le déconseillons. Voici ce que nous avons fait :
atelier@ubuntu:~$ wget http://avr8-burn-o-mat.aaabbb.de/avr8-burn-o-mat-2.1.2-all.deb
atelier@ubuntu:~$ sudo dpkg -i avr8-burn-o-mat-2.1.2-all.deb
Mais il y a une erreur (numéro de version), le paquet ne respecte pas les standards. Pareil en passant par l’installeur de paquets Ubuntu.
Il est possible d’utiliser les autres fichiers disponibles sur le site aaabbb, dont les sources. Pour simplifier, on partira du principe que les utilisateurs de Linux n’ont pas besoin d’une interface graphique pour avrdude, donc pas de AVR Burn-O-Mat pour eux bien que cela soit possible.
Utilisation
La fenêtre est très simple.
Dans la plupart des cas, vous n’avez que trois opérations à faire :
– vous assurer que le micro-contrôleur est le bon, par exemple "atmega8" à sélectionner dans le menu déroulant "AVR type"
– aller chercher le programme .hex dans la partie "Flash" (et pas EEPROM), en cliquant sur le bouton "File" et en sélectionnant dans l’arborescence de votre ordinateur le bon fichier
– cliquer sur le bouton "Write" pour écrire le programme dans la mémoire de l’AVR (attention, c’est le bouton Write de la section Flash, pas EEPROM).
Configuration de AVRDUDE
Lorsque vous connectez une carte de programmation par liaison USB (série) pour AVR la première fois sur votre ordinateur, un numéro de port lui est attribué (COM1, COM2, COM3...) et normalement il ne changera plus, même lorsque vous connecterez d’autres cartes du même type ou d’autres cartes utilisant l’USB pour une communication série de type COMx.
Donc pour la première fois, ou dans d’éventuels rares cas, voici comment sélectionner le bon port série et le type de carte de programmation.
Un menu "Settings" propose de configurer AVRDUDE (premier choix dans la liste) :
Une fenêtre apparaît alors. Si vous avez installé vous-même avrdude ou bien si vous avez installé WinAVR avec un autre chemin que celui connu de AVR Burn-O-Mat, alors il faut changer le chemin vers le fichier avrdude.exe et avrdude.conf.
Une fois fait, fermez AVR Burn-O-Mat et relancez-le afin qu’il interroge avrdude sur ses options disponibles, puis revenez sur cet écran de configuration d’AVRDUDE : la section "AVRDUDE Options" comporte deux champs "Programmer" et "Port" que l’on va personnaliser.
Si vous utilisez une carte de la marque myAVR, c’est le choix "avr910" qu’il faut sélectionner dans le menu déroulant du "Programmer".
Pour le port, la liste n’est pas spécifique à votre machine, elle est très longue. Il faut donc identifier par un autre moyen (panneau de configuration du matériel de Windows, logiciel spécifique à votre carte de programmation) quel est le numéro de votre port.
Les options en dessous sont modifiées automatiquement selon le type de programmateur sélectionné. N’y touchez pas sans une bonne connaissance de leurs effets.
Cliquez sur le bouton "Apply" puis "Ok". Vous êtes désormais prêt à envoyer le programme compilé dans le micro-contrôleur.