Arduino en ISP

Plein de microcontrôleurs Atmel et pas de quoi les programmer sous la main. Et bien si, j’ai un Arduino pour faire ça !

Un Arduino Nano v3.0 en ISP

20131220_205520_crop

Il suffit de câbler 4 signaux entre l’Arduino et la cible, à savoir dans le cas d’un ATtiny13 (c’est pareil pour la famille ATtiny25/45/85) :

Arduino Nano Sens ATtiny Signal
/D10 pin 1 Reset
/D11 pin 5 Master Out, Slave In (MOSI)
D12 pin 6 Master In, Slave Out (MISO)
D13 pin 7 Slave ClocK (SCK)
GND pin 4 masse – 0V
+Vcc pin 8 alim – 5V

En bonus, on peut ajouter 3 leds pour connaitre l’état de la programmation (avec pour chacune une résistance de 120 Ω, à savoir :

Arduino Nano Nom Description
/D9 Heartbeat clignote doucement lorsque l’application est en attente.
D8 Error S’allume en cas d’erreur de programmation, souvent parce qu’un fil s’est débranché.
D7 Programming En communication avec la cible.

Encore une petite astuce, certains Arduino ont une mécanisme de reset commandé par un des signaux du composant USB (DTR). C’est bien quand on veut mettre à jour son Arduino puisqu’il boot sur le bootloader, mais dans notre cas, l’application ArduinoISP n’a plus la main avant que le bootloader rende la main et l’IDE va tomber en erreur car il n’a pas de réponse du programmeur. Ça donne souvent une erreur comme :

avrdude: stk500_getsync(): not in sync: resp=0x15

Pour éviter ce comportement, on bloque le reset en ajoutant une capacité de forte valeur (10µF) entre la masse (GND) et la broche de reset (RST) et le tour est joué.

Au global, ça donne le schéma complet ci-dessous :

ISP-Atmel-dip8_schéma

IDE Arduino

Pour charger le programmeur dans l’Arduino, il faut ouvrir l’exemple ArduinoISP (Fichier  / Exemples / ArduinoISP) et simplement lancer la compilation et le transfert (CTRL-U).

Ensuite, il ne reste plus qu’à charger un exemple ou un sketch pour le tiny choisi (attention à la taille des programmes pour cette gamme de contrôleurs) et à indiquer le contrôleur à flasher… sauf que les ATtiny sont introuvables dans la liste proposée (Outils > Type de Carte). Il m’a fallut « googler » un peu pour trouver ce qui manquait, les définitions des contrôleurs de la gamme Tiny. C’est ici : https://github.com/damellis/attiny/

C’est encore une fois presque bon, car il manque encore l’ATtiny13 (que je viens d’ajouter et de proposer en “pull request” à l’auteur), sinon il faudra remplacer le fichier boards.txt par celui-ci : https://github.com/Marcussacapuces91/attiny/commit/c381baea4ca9302dcbca1d900e87149a388999b6.

Il suffit de tout décompresser dans Arduinohardware, ce qui va donc créer un nouveau répertoire attiny et de relancer l’IDE.

Enfin on va pouvoir flasher le Tiny en ayant pris soin de préciser dans le menu Outils / Programmateur : Aduino as ISP.
Si vous tester l’exemple Blink, il faut penser à changer la broche de sortie en 0 pour faire clignoter une led en PB0 (broche 5 en PDIP/SOIC).

Quelques références

Une réflexion sur « Arduino en ISP »

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *