prof. Jacques Lepot
AVRDUDE
C'est quoi ?


AVRDUDE est un programme open source pour la programmation (le flashage) des processeurs AVR.
Il supporte un grand nombre de programmateurs entre-autres, notre programmateur USBASP.
Il est indépendant de l'outil qui a été utilisé pour produire le code exécutable (fichier .HEX), Que le programmme ait été écrit en C,C++,Bascom ou assembler n'a pas d'importance, AVRDUDE se charge simplement de le transférer dans le processeur (la cible ou target)

AvrDude est intégré dans l'environement arduino et toutes les opérations décrites si dessous sont automatisées.
Allez voir dans le répertoire /hardware/tools/avr/bin/ de votre installation arduino, c'est la qu'il se trouve.

AvrDude est un programme en ligne de commande sans interface graphique, heureusement il existe une interface graphique indépendante qui évite de connaître toutes les options de la ligne de commande et permet de choisir les fichiers à flasher avec l'explorateur.

Pour installer Avrdude et l'interface graphique (GUI),téléchargez cette archive : AVRDUDE + GUI,
Dézipez vers un répertoire, il n'y a pas d'installation à réaliser.

Après avoir installé le driver du programmateur et connecté avec succès le câble USB entre le PC et le programmateur,
lancez l'interface graphique en cliquant sur avrdude-gui.exe.

avrdudegui


Utilisation

 

1- Définissez l'emplacement de avrdude.exe, le programme exécutable.
2- Choisissez le processeur installé sur la cible, l'ATmega168 n'est pas prédéfini, utilisez ATmega88.
3- Type de programmateur utilisé: USBASP , pas de port à définir car USB, laissez la valeur par défaut (lpt1).
4- Définissez l'emplacement du programme à charger dans la cible, il y a un programme TEST1.HEX dans le zip,
cochez Write et Verify. Le format est Intel.hex
------- > Attention, vérifiez que aucune des cases de la zone Fuse n'est cochée.
5- Dans la fenêtre vous voyez la commande qui devrait être lancée

cliquez Execute.

La deuxième led doit s'alu mer pendant l'opération
Des messages apparaissent dans la fenêtre inférieure, ils vous indiquent le résultat de l'opération.

vous devriez lire un de ces messages:

avrdude.exe: error: could not find USB device "USBasp" with vid=0x16c0 pid=0x5dc

pas bon,
le programateur n'a pas été détecté

avrdude: error: programm enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
avrdude: AVR device initialized and ready to accept instructions

ok,
le programmateur a été détecté,
mais la "cible" ne réponds pas.
Normal, il n'y en a pas encore.

Maintenant, nous allons installer le programme TEST1.HEX dans un microcontrôleur,
Pour cela il nous faut réaliser un petit montage sur un bread-board

Voici le schéma
La valeur des résistances n'est pas critique, entre 220 et 470 ohm.
Il n'y en a que 2 ici mais vous pouvez utiliser toutes les pattes de droite pour brancher des leds

img1

Une fois le montage réalisé, il faut connecter les signaux ISP du programmateur vers la cible,

Un câble ISP comporte 6 signaux:

VCC et GND, l'alimentation 5V (en provenance de l'USB) et la masse
RESET, indique au processeur qu'il doit être programmé
MISO,MOSI et SCK, liaison série bi-directionelle synchrone, pour les données.

Branchez ces signaux vers votre projet, attention pas de court-circuit, c'est votre PC qui souffrirait.
Il est plus prudent de débrancher le câble USB pendant cette opération.

Une fois le branchement réalisé, rebranchez le câble USB, et relancez la commande EXECUTE de avrdude,
si tout se passe bien, les messages devraient se terminer ainsi

avrdude.exe: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02savrdude.exe: Device signature = 0x1e9307
.....
avrdude.exe: writing flash (164 bytes):
Writing | ################################################## | 100% 0.03s
avrdude.exe: 164 bytes of flash written
.....
avrdude.exe: verifying ...
avrdude.exe: 164 bytes of flash verified
avrdude.exe done. Thank you

tout est bon !


Et les leds sur votre projet devraient clignoter.

Remarques:
si on utilise le réglage ATMega88 pour programmer un ATMega168,
il faut cocher la case -F Override signature check.
une autre possibilité est de modifier manuellement la ligne de commande et remplacer m88 par m168,
comme ceci : "avrdude" -p m168 -c usbasp -P lpt1 -U flash:w: .... etc
avant de clicquer Execute.

FUSES: pour qu'un ATMEGA168 puisse opérer avec sa clock interne à 8 MHZ (par defaut = 1MHZ),
LES FUSES DOIVENT ETRE : extd: F9 hi:DD lo:E2, il ne faut les écrire qu'une fois.
Ne jamais écrire le fuse lock, le processeur serait définitivement verrouillé.