Bonjour à tous,
Depuis environ 2 ans, je m'intéresse en amateur aux AVR. Jusqu'ici, j'ai travaillé sur des AVR "nus" (sans Arduino). Ce n'est que tout récemment que j'examine un peu le monde Arduino.
Pour transformer un Atmega nu en Atmega compatible avec l'Arduino, il suffit de charger le Bootloader dans la mémoire flash de l'Atmega.
Il y a 2 sources pour ce Bootloader:
-
Si on dispose d'un Arduino fonctionnel, le Bootloader est enregistré dans la mémoire de l'Atmega. On peut alors suivre la procédure expliquée ci-dessus pour transférer une copie du bootloader dans l'Atmega nu.
-
Si on ne dispose pas d'un Arduino fonctionnel, le bootloader est téléchargeable sur le site Arduino. Une fois téléchargé, le Bootloader est à transférer dans l'Atmega nu à l'aide d'un programmateur.
Si on est bricoleur, le programmateur à faire soi-même le moins cher est probablement le programmateur série par RS232, à utiliser avec le programme Ponyprog :
Si on n'est pas trop bricoleur, il faut acheter un programmateur. Un Avrisp mkII officiel marche certainement très bien mais il coûte dans les 30€ sans compter les frais d'envoi.
Personnellement, j'utilise 2 programmateurs différents :
- Un clone de l'Avrisp mkII que j'ai monté à partir d'un kit vendu ICI pour 10€, frais d'envoi compris.
- Un USBasp décrit ICI et qu'on trouve sur eBay à moins de 5€, frais d'envoi compris, par exemple ICI
Dans l'environnement Arduino, tout paraît assez simple car le travail est prémâché: on achète une carte qui contient déja son microcontrôleur avec bootloader installé et tout ce qu'il faut pour l'alimentation, le raccordement au PC par USB, les connecteurs où il suffit d'enficher de nouvelles cartes de senseurs ou d'effecteurs, ainsi que tout un environnement de programmation.
C'est normal qu'on se sente un peu perdu dès qu'il faut mettre un Atmega sur une breadboard, installer une liaison ISP avec le programmateur, charger un bootloader et programmer les fusibles.
Donc, si certains d'entre vous ont besoin d'un coup de main pour l'une de ces tâches, je suis prêt à les aider.
Au fait, certains ne savent pas trop à quoi sert le bootloader. C'est un petit programme qui reste dans la mémoire de l'Atmega même quand on change le programme principal, et qui sert à établir une éventuelle communication avec le PC à la mise en route de l'Arduino. Le bootloader attend quelques instants pour voir si le PC n'a pas un nouveau programme à envoyer. S'il n'y a pas de nouveau programme, le bootloader passe la main au programme qui est déjà installé dans l'Atmega. Si le PC veut installer un nouveau programme, le bootloader efface l'ancien et copie le nouveau programme dans la mémoire flash.
Lorsqu'un Atméga est acheté nu, il ne comporte pas de bootloader. Toute la mémoire flash est accessible et effaçable. Un programmateur est nécessaire pour envoyer un programme dans la mémoire. Si ce programme est un "bootloader", il va se positionner tout à la fin de la mémoire. Après qu'il est enregistré en fin de mémoire, il faut modifier les fusibles pour que cette partie de la mémoire soit épargnée lors du prochain effacement, sinon le bootloader sera effacé au prochain chargement de programme. Le bootloader peut alors entrer en communication avec le PC pour charger les programmes désirés dans le reste de la mémoire.