avr:programmer

Dernière modification : 2011/07/09 18:31

programmation ISP d'un AVR : exemple avec l'ATTiny45

Article de blog associé : Utiliser un arduino comme programmeur ISP

utiliser un arduino


Il faut utiliser le sketch ArduinoISP présent dans les exemples. Il est aussi dispo sur le site 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 pour les autres méthodes.

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


Enfin, le sketch mega-isp utilise 3 leds d'état.
Arduino 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/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:


Reprogrammer le bootloader d'une arduino à partir d'un arduino

(Yeah! mise en abime !)

Connections

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.

data/Arduino/Arduino_ISP_Arduino.png

Flash via la GUI


Attention: il faut l'IDE 22 ou le sketch mega-isp de google-code (Cf issue14

  • 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
    • Si vous avez changé la vitesse dans le sketch ArduinoISP, voir /usr/share/arduino/hardware/arduino/programmers.txt arduinoisp.speed

Commandes avrdude


Les paramètres sont à trouver dans les fichiers de définition hardware :
  • /usr/share/arduino/hardware/arduino/boards.txt (source)
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/...

  • débloquer l'accès au bootloader
 avrdude -p m328p -P /dev/ttyUSB0 -c avrisp -b 19200 -e -U lock:w:0x3F:m 


  • flasher le bootloader
 avrdude -p m328p -P /dev/ttyUSB0 -c avrisp -b 19200 -D -U flash:w:ATmegaBOOT_168_atmega328.hex 


  • rebloquer l'accès au bootloader
 avrdude -p m328p -P /dev/ttyUSB0 -c avrisp -b 19200 -U lock:w:0x0F:m 




BitBang technic

Permet de flasher l'arduino en utilisant le mode bitbang du chipset FT232
nécessite de patcher avrdude et de souder un connecteur sur la carte arduino


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)

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