Salut à tous ![]()
Aujourd'hui j'ai galéré comme un perdu sur un truc débile, et histoire que d'autre ne ce casse pas la tête dessus je vous post l'astuce ![]()
LE probléme :
Par défaut l'IDE arduino pour windows est fourni avec une très vieille version de winAVR, pour la majeur partie des Arduinistes cela ne pose aucun probléme MAIS !
Pour ceux qui font leur propre board arduino avec des µc récent (atmega32u4, xmega, avr32, ...) cette version de winAVR (et par conséquent de avrdude) ne comporte pas les dit µc (logique ils n'existaient pas à l'époque !).
La solution est toute bête, prendre la version la plus récente de winAVR et remplacer celle d'origine.
Sauf que ça ne marchera pas aussi facilement !
Si on renomme le dossier ..\hardware\tools\avr en avr-old par exemple puis que l'on copie le dossier d'installation de winAVR (C:\WinAVR-20100110 dans mon cas) on va voir apparaitre un jolie :
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
dans la console arduino et impossible d'uploader un quelconque sketch !
Le probléme c'est que l'équipe arduino a modifié le code source de avrdude à leur sauce pour que avrdude reconnaisse le bootloader arduino comme un bootloader stk500.
Mais cela n'est plus nécessaire car la dernière version de winAVR comporte un protocole nommé "arduino" spécialement étudié pour ... l'arduino.
Voila comment mettre à jour winAVR correctement :
1 - Renommer le dossier ..\hardware\tools\avr en avr-old
2 - Copier C:\WinAVR-20100110 (dernier version dispo au moment où je post) dans ..\hardware\tools
3 - Renommer ..\hardware\tools\WinAVR-20100110 en ..\hardware\tools\avr
4 - Créer un dossier etc dans ..\hardware\tools\avr
5 - Copier ..\hardware\tools\avr\bin\avrdude.conf dans ..\hardware\tools\avr\etc
-- La mise à jour à proprement dite de winAVR est finit --
Maintenant il faut modifier le fichier ..\hardware\arduino\boards.txt
Chaque lignes dans ce genre :
xxxxxxx.upload.protocol=stk500
doit être remplacer par :
xxxxxxx.upload.protocol=arduino
Exemple :
uno.name=Arduino Uno
uno.upload.protocol=stk500
uno.upload.maximum_size=32256
...
modifier en :
uno.name=Arduino Uno
uno.upload.protocol=arduino
uno.upload.maximum_size=32256
...
Par contre les lignes dans ce genre : mega2560.upload.protocol=stk500v2 ne doivent pas être modifiée !
Ensuite faite un test avec une board arduino "classique" (UNO ou assimilé) et l'exemple blink pour être sur que tout va bien (et si possible avec un mega2560 aussi).
Normalement vous devrez pouvoir utiliser l'IDE arduino avec des ATmega récent, normalement pas supporté de base.
Exemple avec un ATmega1284p sur une board arduino "maison" sans utiliser de bootloader :
##############################################################
M1284_DIY.name=DIY ATmega1284
M1284_DIY.upload.using=usbtiny
M1284_DIY.upload.maximum_size=131072
M1284_DIY.bootloader.low_fuses=0xFF
M1284_DIY.bootloader.high_fuses=0xDC
M1284_DIY.bootloader.extended_fuses=0xFD
M1284_DIY.bootloader.path=atmega1284
M1284_DIY.bootloader.file=blink.hex
M1284_DIY.bootloader.unlock_bits=0x3F
M1284_DIY.bootloader.lock_bits=0x0F
M1284_DIY.build.mcu=atmega1284p
M1284_DIY.build.f_cpu=20000000L
M1284_DIY.build.core=arduino.DuinOS
M1284_DIY.verbose=true
Il est bien évident qu'il faut avoir un "core" arduino supportant l'ATMega "cible", ici par exemple j'utilise duinOS pour compiler mode code arduino "classique" ou "rtos" sur l'ATmega1284p.
Pour un ATmega644p il existe sanguino, pour les Attiny il existe arduino-tiny, etc, etc, ...
Voila j'espère que cela aidera d'autre Arduinistes dans leur conquête du monde de l'arduino ![]()
Petite remarque : J'ai ouvert un billet sur le google code du projet arduino il y a 4-5 mois qui a été accepté donc normalement la prochaine version de l'IDE arduino devrait être fourni avec winAVR 2010 ou crosspack (le principe d'installation est le même).

