avr:programmer

Dernière modification : -


// 2011/07/04 09:04 / 2.11.114.235
programmation ISP d'un AVR : exemple avec l'ATTiny45

!! utiliser un arduino

Il faut utiliser le sketch ArduinoISP présent dans les exemples. Il est aussi dispo sur le site [mega-isp|http://code.google.com/p/mega-isp/].
On le compile et le charge dans l'arduino.

Il faut désactiver l'autoreset pour bypasser le bootloader.
Pour un Duemilanove, le plus simple et le moins intrusif est de relier le reset au +5V par une réstance de 120ohms.
Voir [ici|http://www.arduino.cc/playground/Main/DisablingAutoResetOnSerialConnection] pour les autres méthodes.

On relie les différentes pattes pour l'ISP :
|h Arduino |h ATTiny45 |h Fonction |
|, 10 |, 1 | /reset |
|, 11 |, 5 | MOSI |
|, 12 |, 6 | MISO |
|, 13 |, 7 | SCK |

Enfin, le sketch mega-isp utilise 3 leds d'état.
|h Arduino |h led (anode) |
|, 7 | jaune: prog en cours |
|, 8 | rouge: erreur |
|, 9 | vert: heartbeat |

Note: par défaut ArduinoISP utilise une vitesse de 19200bps. On peut changer cela dans le code.

[data/Arduino/resized_Arduino_ISP.png|data/Arduino/Arduino_ISP.png]

Enfin pour programmer notre ATTiny, on utilise avrdude :
{{avrdude -V -p t45 -c avrisp -b 19200 -P /dev/ttyUSB0 -U flash:w:led.hex}}

Liens:
* http://arduino.cc/en/Tutorial/ArduinoISP
* http://www.arduino.cc/playground/Code/MegaISP
* http://code.google.com/p/mega-isp/

!! Reprogrammer le bootloader d'une arduino à partir d'un arduino
(Yeah! mise en abime !)

* http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1267120897
* http://arduino.cc/en/Tutorial/ArduinoToBreadboard

!!! Connection
Le 1er arduino est chargé avec le sketch ArduinoISP comme ci-dessus.
Puis on le connecte vers le port ICSP du 2ème (celui à flasher) ou directement sur les pattes qui vont bien.

!!! Flash via la GUI

* choisir la carte dans le menu board
** UNO pour avoir l'optiboot
** duamilanove avec atmega328
** autre chose suivant votre modèle d'arduino
* burn bootloader w/ArduinoISP

!!! Commandes avrdude

Les paramètres sont à trouver dans les fichiers de définition hardware :
* /usr/share/arduino/hardware/arduino/boards.txt
regarder aussi dans les préférences :
* /usr/share/arduino/lib/preferences.txt
* ~/.arduino/preferences.txt
sous la forme :
{{<board>.bootloader.xxx=YYY}}

les fichiers hex du boot sont sous : ''/usr/share/arduino/hardware/arduino/bootloaders/...''

!! BitBang technic
Permet de flasher l'arduino en utilisant le mode bitbang du chipset FT232
nécessite de patcher avrdude
* http://www.geocities.jp/arduino_diecimila/bootloader/index_en.html
* http://doswa.com/blog/2010/08/24/avrdude-5-10-with-ftdi-bitbang/
* http://www.arduino.cc/playground/Hacking/AvrdudeFTDIBitbang

!! Utiliser un stk500

Atmel propose deux connecteurs normalisés pour la programmation ISP :
[data/Arduino/ISP.png]
Ils sont documentés dans la note d'application 42 ([pdf|http://www.atmel.com/atmel/acrobat/doc2521.pdf])

Le stk500 est un programmeur USB qui se branche sur un tel connecteur.

Les branchements sur l'ATTiny se font sur les mêmes pattes que précédemment.

'''Attention:''' la source de courant doit provenir de la cible. ie: le montage doit fournir le +5V vers la patte VTG.

On utilise toujours avrdude pour programmer, seul l'option ''-c'' change:
{{avrdude -V -p t45 -c stk500 -P /dev/ttyUSB0 -U flash:w:led.hex}}