L'utilisation d'un Arduino Uno comme ISP (In-System Programmer) est relativement bien documentée.
Il en va tout autrement concernant l'utilisation d'un Arduino Leonardo. Cette carte est très différente quant à sa gestion du port USB et au branchement de l'ATTiny.
Fort heureusement un bloggueur a décrit le processus en détails.
J'en propose ici une version francisée et un peu complétée, peut-être plus accessible aux makers francophones:
Tout d'abord munissez-vous d'un environnement de développement Arduino récent.
1) Comme indiqué dans le schéma ci-dessous, connecter les broches MISO/MOSI et SCK de l'ATTiny sur les pins correspondants du connecteur ICSP de l'Arduino.
Connecter la broche Reset de l'ATTiny sur la broche 10 de l'Arduino.
2) Ouvrir l'IDE Arduino et charger le sketch "Arduino ISP".
Changer la ligne:
#define RESET SS
en:
#define RESET 10
Cela définit la pin 10 comme pin de Reset de l'ATTiny.
Sauvegarder ce sketch sous le nom "Arduino ISP (Leonardo)"
3) Compiler et uploader ce sketch dans l'Arduino.
4) Dans l'IDE ouvrir le moniteur série et s'assurer que le baud rate n'est pas égal à 1200bps. Refermer le moniteur série. Cette étape enlève le magic baud rate du port série, qui causerait des auto-resets unintentionnels.
5a) Sur Linux (et probablement aussi sur Mac), vous pouvez sumplement aller dans le menu "Tools > Programmer" et sélectionner le programmateur "Arduino as ISP". L'Arduino Leonardo est maintenant prêt à être utilisé en tant qu'ISP.
5b) Sur Windows les choses sont un peu plus compliquées. Quand on utilise l'Arduino en tant qu'ISP, l'IDE utilise AVRDude avec le protocole stk500v1. Avec l'IDE Arduino 1.0.2, 1.0.3 et probablement d'autres versions, cela ne fonctionne pas et produit le message d'erreur suivant:
avrdude.exe: Send: 0 [30] [20]
avrdude.exe: Send: 0 [30] [20]
avrdude.exe: Send: 0 [30] [20]
avrdude.exe: Recv:
avrdude.exe: stk500_getsync(): not in sync: resp=0x00
Une solution temporaire (mais qui fonctionne parfaitement) a été suggérée ici. Il s'agit de définir un programmateur qui utilise le protocole "Arduino" au lieu de "stk500v1".
Pour ce faire, créer un dossier "hardware\leofix" dans votre dossier "carnet de croquis" (sketchbook). Dans ce dossier, créer un fichier programmers.txt avec le contenu suivant:
arduinoispleo.name=Arduino as ISP (Leonardo)
arduinoispleo.communication=serial
arduinoispleo.protocol=arduino
arduinoispleo.speed=19200
Après redémarrage de l'IDE, vous aurez une entrée "Arduino as ISP (Leonardo)" dans le menu "Outils / Programmateur". L'explication technique détaillée du fix est donnée dans la version originale de l'article.
6) Il est maintenant temps de tester le programmateur. La suite de cet article s'inspire de celui-ci, qui m'a été fort utile pour configurer l'IDE Arduino pour l'ATTiny. En effet les ATTiny n'apparaissent pas par défaut dans le menu des cartes disponibles.
Il va falloir télécharger le fichier master.zip
Décompresser ce fichier. Il contient un dossier atttiny-master contenant un dossier attiny.
Créer un dossier hardware dans votre dossier "carnet de croquis", s'il n'existe pas déjà.
Y copier le dossier attiny (pas le dossier attiny-master!). Vous devriez maintenant avoir une structure de dossiers du genre Documents\Arduino\hardware\attiny contenant le dossier atttiny.
Redémarrer l'IDE Arduino. Vous devriez maintenant avoir des entrées ATTiny dans le menu "Outils / Type de carte"
7) Connecter une LED à travers une résistance de 220Ω entre la broche 2 (Pin 3) de l'ATTiny et la masse.
8) Charger le sketch d'exemple "Blink".
Modifier la ligne:
int led = 13;
en
int led = 3;
9) Dans le menu Outils/Type de carte, choisir le modèle d'ATTiny que vous utilisez.
Si vous souhaitez changer la fréquence d'horloge (1Mhz par défaut), cliquer sur Outils/Graver la séquence d'initialisation. Cela va modifier les fusibles de l'ATTiny selon vos réglages de type de carte.
Dans le menu Outils/Programmateur choisir "Arduino as ISP (Leonardo)".
Compiler et uploader le sketch.
Vous aurez ce message d'erreur, qui est normal!
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny85
avrdude: please define PAGEL and BS2 signals in the configuration file for part ATtiny8
La LED de l'ATTiny doit maintenant clignotter!
FAQ:
*La LED ne clignotte pas:
Branchez-là sur la broche 3 de l'Arduino Leonardo. Si elle clignotte c'est que vous avez oublié de sélectionner le programmateur "Arduino as ISP (Leonardo)" et c'est le Leonardo qui a été programmé à la place. Re-sélectionner le programmateur "AVRISP mkII", et re-uploader "Arduino ISP (Leonardo)", puis recommencer la procédure au point 6).