Je vais rassembler ici les infos glanées ça et là pour charger un bootloader d’arduino depuis linux sur un atmega8 ou 168.
Je veux utiliser le le matériel que j’ai, soit :
– une carte arduino diecimila (atmega 168) site arduino, forum francais
– un programmateur pour atmel mySmartUSB
On trouve sur le net pas mal de guides pour graver le bootloader depuis la carte arduino, mais je préfèrerais depuis la mySmartUSB car je n’ai pas trop envie d’enlever l’atmega de la carte à chaque fois.
J’ai trouvé sur arduinofun.com une méthode que je dois encore tester…
En fait je teste plutôt pour l’instant la méthode de Arduino Standalone qui charge le boot loader avec
1 |
avrdude -P /dev/ttyUSB0 -c AVR910 -p m168 -U flash:w:/partage/Code_AVR/bootloader/ATmegaBOOT_168_pro_8MHz.hex -U lfuse:w:0xE2:m -U hfuse:w:0xDF:m |
Après avoir bloqué un atmega (erreurs dans les fuses…) j’ai tenté une autre technique qui fonctionne !
Pour programmer un atmega168 utilisable seul (sans quartz)
Donc :
- création du programme dans l’IDE d’arduino
- éventuels tests sur la carte arduino normale
- on débranche la carte arduino et on branche le programmateur ISP
- sélection de la carte « Lilypad Arduino with atmega 168 » dans le menu « Board » (pour utiliser l’atmega168 sans quartz)
- on demande a l’IDE de charger le programme sur la carte (Ctrl+U), ce qui va créer un fichier « .hex » dans le dossier »applet » du dossier contenant le sketche. Evidemment il y a une erreur puisqu’il n’y a pas de carte lilypad connectée à l’ordi
- puis on charge le fichier « .hex » avec avrdude avec les fusibles qui vont bien (pour le 8mhz), comme ci dessous (sur linux, avec arduino 1.0, le fichier .hex est dans le dernier dossier /tmp/build*)
- Il n’y a qu’à mettre seulement l’alimentation sur l’atmega et c’est partie
1 2 |
# Chargement du fichier .hex avrdude -P /dev/ttyUSB0 -c AVR910 -p m168 -U flash:w:intervallometre.cpp.hex -U lfuse:w:0xE2:m -U hfuse:w:0xDF:m |
Avec mon programmateur (compatible AVR910) avrdude ne reconnais pas le 168. Il suffit de rajouter le devcode dans la partie atmega168 du fichier /etc/avrdude.conf :
1 2 |
#avr910_devcode = 0x; avr910_devcode = 0x6; |