Flasher le bootloader de l'Arduino dans un Atmega328
SI l'on veut utiliser une carte Arduino pour programmer un ATmega328 et le faire fonctionner dans un montage en autonomie. Il faut placer cet Atmega328 dans le support de la carte Arduino et flasher un bootloader. Le bootloader est un programme qui se charge au démarrage de la carte Arduino et permet de téléverser le programme à exécuter via l'interface sérielle. Ce bootloader ne sera pas écrasé lors du téléversement d'un programme exécutable en utilisant l'IDE de l'Arduino.
La carte Arduino UNO pour flasher le bootloader doit être une vesion avec support DIL 28 broches pour Atmega328 et non une version CMS.
3 méthodes sont possibles en fonction du matériel dont on dispose :
Avec 2 cartes Arduino UNO
Le câble USB de l'ordinateur est à relier au port USB de la carte Arduino Programmateur.
La carte Atmega328 à flasher est celle qui possède un support DIL 28 broches.
On utiise des câbles DUPONT pour relier les 2 Arduinos.
Les branchements respectent le câblage de l'interface de programmation d'un AVR
sur la carte Arduino à flasher les signaux sont les suivants
signal |
Broche Arduino |
---|---|
GND |
GND |
VTG |
+ 5V |
MOSI |
11 |
MISO |
12 |
SCK |
13 |
RESET |
RESET |
Avec une seule carte Arduino UNO et sans programmateur
La méthode nécessite un peu plus de câblage de composants, car il faut que l'atmega soit alimenté en 5V, un oscillateur à quartz et une impulsion de reset sont nécessaires. On respecte le schéma suivant :
On peut trouver des adaptateurs pour Atmega328, ou en construire un sur plaquette pastillée.
Il faut juste respecter les 6 branchements : GND, + 5V, Reset, SCK, MOSI, MISO.
Il est possible de construire un adaptateur sur plaque de connexions, mais il faut mieux s'assurer que les contacts soient bons.
Si L'IDE ne renvoie aucune erreur après avoir gravé la séquence d'initialisation. On peut enlever l'Atmega328 de sa carte d'adaptation ou de sa plaque de connexions.
On remplace l'Atmega328 de la carte Arduino par celui-ci et l'on teste un programme simple comme Blink qui fait clignoter la LED L en changeant le niveau sur la broche 13.
La programmation
Que l'on utilise 2 cartes Arduino ou un adaptateur, la programmation du bootloader se fait en suivant les étapes :
1.Dans le menu Exemples, on choisit le sketch ArduinoISP.
2. Dans le menu Outils, on choisit le type de programmateur Arduino As ISP. La carte Arduino est configurée en programmateur.
3. On n'oublie pas de sélectionner l'interface sérielle. Ici le port COM9.On peut maintenant Téléverser le programme dans la carte Arduino.
4. Il ne reste plus qu'à Graver la séquence d'initialisation dans l'Atmega328.
5. On peut maintenant remplacer l'Atmega328 de la carte Arduino par cet atmega qui possède un bootloader et tester un programme simple comme Blink qui fait clignoter la LED L en changeant le niveau sur la broche 13.
Avec un programmateur
Comme je ne possède de programmateur compatible avec l'IDE de l'Arduino, comme l'Arduino ISP, mais un programmateur pour AVR universel MikroProg for AVR de MikroElektroniKa, je vais décrire ici une méthode simple pouvant être utilisé avec n'importe quel autre programmateur AVR.
On relie la carte Arduino au connecteur ISCP en respectant le brochage. Il existe 2 types de connecteur ISCP un à 6 broches et un à 8 broches. Ils véhiculent tous les deux les 6 signaux nécessaires.
voir la page Programmer un microcontrôleur AVR.
Un programmateur universel utilise des fichiers au format .Hex pour programmer le microcontrôleur.
Le bootloader est aussi un fichier .hex. Il en existe plusieurs suivant l'atmega présent sur la carte. Dans le langage Arduino, on les appelle Optiboot.
On peut les trouver en suivant le chemin :
C:\Program Files (x86)\Arduino\hardware\arduino\avr\
bootloaders\optiboot
Pour un atmega 328 on choisit : optiboot_atmega328.hex.
Il ne reste plus qu'à charger le fichier.hex dans le logiciel de programmation et de programmer l'Atmega.
Mais il y a les réglages des fusibles ...
Comme l'atmega 328P fonctionne avec un quartz de 16 Mhz sur la carte Arduino, on choisit XTAL 8.0 MHz-16MHz.
BOD Enabled, 4.3V (Brown Out Detector) si Vcc passe en dessous de 4,3 V permet un reset. Peut être désactivé.
Pour vérifier, on peut tester un programme simple comme Blink qui fait clignoter la LED L en changeant le niveau sur la broche 13.