usbasp promini wiring   Petit tuto pour programmer un Arduino Pro-mini en ICSP avec un programmateur USBASP 2.0

Dans certains cas, il peut être nécessaire de programmer un Arduino via le port ICSP.
Par exemple, si le microcontrôleur a été remplacé par un neuf, si par mégarde le bootloader a été corrompu ou effacé, si le programme injecté est corrompu et qu'il n'y a plus d'accès via le port USB ou le connecteur FTDI, si le logiciel est distribué au format HEX, si on n'a plus accès au microcontrôleur via le port USB, etc...

La plupart des platines Arduino possède un port ICSP qui permet de raccorder directement un programmateur ICSP, mais pas l'Arduino mini.
Dans ce cas, il faut utiliser les pins D11 à D13 et la pin RESET.

Pour ma part, j'utilise un programmateur d'origine chinoise USBASP 2.0 qui est une copie du montage originel publié par Thomas Fischl.

 Le connecteur à la sortie du programmateur USBASP est un 10 pin, contre 6 pour le standard ICSP.

Il existe un câble adaptateur qui passe du 10 broches au 6 broches ICSP qui est souvent livré avec le programmateur.
Dans le cas du pro-mini qui ne possède pas ce connecteur, il faut utiliser les pins DIGITAL et RESET de l'Arduino.

 Signal  USBASP PRO-MINI
 MOSI  1   D11
 VCC  2  VCC
 RESET  5  RESET
 SCK  7  D13
 MISO  9  D12
 GND  10  GND

On peut réaliser un câble spécifique avec une rangée de 12 connecteurs femelles côté Arduino et un connecteur HE10 côté programmateur.
On peut réaliser une petite platine avec un support pour le pro-mini et un connecteur 6 ou 10 broches qui relient les bonnes pins.
Ou avec des petits cordons de tests pour une utilisation moins fréquente.

   icsp board0 icsp board1 

Driver pour programmateur USBASP

Pour faire reconnaître le programmateur par le PC, il faut installer un pilote. Le plus simple est d'installer le pilote Zadig

zadig 3

A noter que j'ai dû installer le driver libusbK pour que le programmateur soit aussi reconnu par l'IDE Arduino. Le driver libusb-win32 n'a pas fonctionné dans tous les cas de figure.
Vérifiez que le driver est bien installé en ouvrant le gestionnaire de périphériques.
zadig 4

Flasher le bootloader avec AVRDUDE

Les AVR Atmel sont d'excellents petits circuits intégrés, mais leur programmation peut s'avérer délicate. Vous avez besoin d'un programmateur spécial et de quelques fichiers .hex fantaisistes, et ce n'est pas très convivial pour les débutants.
Arduino a largement résolu ces problèmes. Ils ont mis un fichier .hex dans leurs puces AVR qui vous permet de programmer la carte via le port série, ce qui signifie que tout ce dont vous avez besoin pour programmer votre Arduino est un câble USB.

Le bootloader est essentiellement un fichier .hex qui s'exécute lorsque vous allumez la carte. Il est très similaire au BIOS qui fonctionne sur votre PC.
Il fait deux choses. Tout d'abord, il vérifie si l'ordinateur essaie de le programmer. Si c'est le cas, il récupère le programme de l'ordinateur et le télécharge dans la mémoire du circuit intégré (à un endroit spécifique pour ne pas écraser le chargeur d'amorçage). C'est pourquoi, lorsque vous essayez de télécharger du code, l'IDE Arduino réinitialise la puce. Cela revient à éteindre le circuit intégré et à le rallumer pour que le chargeur de démarrage puisse recommencer à fonctionner.
Si l'ordinateur n'essaie pas de télécharger du code, il demande à la puce d'exécuter le code déjà stocké dans la mémoire. Une fois qu'il a localisé et exécuté votre programme, l'Arduino exécute le programme en boucle et ce, tant que la carte est alimentée.

On doit pouvoir trouver les fichiers bootloader dans un des répertoires d'installation de l'IDE Arduino, mais l'emplacement varie suivant la config de l'ordinateur.
J'ai récupéré les différents bootloader sur le GitHub Arduino.
Il existe également des bootloader alternatifs, notamment le urboot

Pour flasher le bootloader, j'ai adopté la méthode avec le logiciel AVRDUDE qui permet en plus énormément de choses, notamment de paramétrer les 'Fuses" (fusibles), d'installer des logiciels à partir de fichier .hex, etc...

Il faut récupérer le logiciel AVRDUDE et l'installer.
Le paramétrer comme sur l'écran ci-dessous :
avrdude 2

On commence par cliquer sur "Detect" (1) en haut à droite pour voir si le logiciel trouve bien le pro-mini.
Si c'est le cas, on sélectionne le fichier bootloader .HEX (2) correspondant à votre pro-mini récupéré comme indiqué plus haut.
On choisit d'écrire (3) et on lance le chargement (4)

A noter que le message d'erreur au sujet de "sck period" peut être omis.

Si tout se passe bien, vous devriez avoir un pro-mini avec le bootloader installé. La LED du pro-mini devrait clignoter, indiquant que le script "BLINK" a bien été installé par défaut.
On peut charger n'importe quel fichier .hex créé par l'IDE Arduino ou tout autre fichier distribué par d'autres programmeurs.
AVRDUDE peut également lire/changer les "fuses", etc...

Flasher le bootloader avec l'IDE Arduino

Il y a plus simple.
Si le pilote pour USBASP a bien été installé, l'IDE Arduino doit également reconnaître le programmateur.
Il est alors possible de flasher le bootloader avec l'IDE.

IDE 1

Le résultat doit être le même, un pro-mini avec un bootloader tout neuf !
Bonne programmation.