Chargement du bootloader 8mhz puis un programme sur un Atmega 328p vierge avec un Arduino Uno sans composants additionnels et l'IDE 1.6.1
L'objectif est de faire fonctionner un microcontroleur comme l'ATMEGA328P en consommant le moins possible d'énergie et en ayant un montage peu couteux.
Cette procédure va vous permettre de charger un bootloader 8mhz sur un atmega328p nu sans composant externes tels qu un quartz ou des condensateurs, juste en utilisant un arduino uno comme ISP (in system programmer). Satisfaisant ainsi en partie notre objectif ci dessus.
J'ai pour ma part passé quelques heures avant d arriver à mes fins malgré de nombreuses lectures sur le sujet, à chaque fois j'ai essuyais des messages d'erreurs. Je vous fais part donc de mon mode opératoire qui fonctionne.
Cette procédure va vous permettre de charger un bootloader 8mhz sur un atmega328p nu sans composant externes tels qu un quartz ou des condensateurs, juste en utilisant un arduino uno comme ISP (in system programmer). Satisfaisant ainsi en partie notre objectif ci dessus.
J'ai pour ma part passé quelques heures avant d arriver à mes fins malgré de nombreuses lectures sur le sujet, à chaque fois j'ai essuyais des messages d'erreurs. Je vous fais part donc de mon mode opératoire qui fonctionne.
Voici les éléments nécessaires pour realiser le chargement du bootloader
- Un arduino Uno r3 avec cable USB,
- Un pc avec l ide arduino version 1.6,
- Une breadboard,
- Un atmega328p,
- Des cables,
- Notepad++ installé sur le PC ou équivalent,
- Une source de tension 5v.
Étape 1 Transformation de l'arduino uno en carte de chargement de bootloader
Connecter votre PC à l'arduino par USB
Vérifiez que votre Arduino est bien connecté, il doit apparaître dans la liste des ports:
Charger l'exemple ArduinoISP comme ci dessous
Vous devriez obtenir ce programme dans une nouvelle fenêtre:
Vérifier que vous êtes bien paramétré dans le menu outil sur Type de carte = "Arduino Uno" et programmateur = "AVR ISP"
Chargez ensuite le programme dans votre Arduino Uno en cliquant sur Téléverser, au bout de quelques secondes vous devriez obtenir cela:
Étape 2 Modification de l'ide pour un atmega328p 8mhz
Cette étape consiste à ajouter dans l'ide le paramétrage pour l'ATMEGA328P en utilisant son horloge interne à 8mhz,Pour cette étape je vous recommande vivement Notepad++ pour faire les modifications de paramétrage.
Fermer votre IDE Arduino
Ouvrir avec notepad++ le fichier
<dossier d'installation>Arduino\hardware\arduino\avr\boards.txt
Faire un copier coller du paramétrage ci dessous à la fin du fichier boards.txt:
##############################################################
atmega328bb.name=ATmega328p on a breadboard (8 MHz internal clock)
atmega328bb.upload.protocol=stk500
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.speed=57600
atmega328bb.upload.tool=avrdude
atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0x05
atmega328bb.bootloader.path=arduino:atmega
atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F
atmega328bb.bootloader.tool=avrdude
atmega328bb.build.mcu=atmega328p
atmega328bb.build.f_cpu=8000000L
atmega328bb.build.core=arduino:arduino
atmega328bb.build.variant=arduino:standard
Relancer votre IDE, vous devriez voir apparaître en bas de la liste dorénavant dans la liste des cartes "ATmega328p on a breadboard (8 MHz internal clock)":
Sélectionner donc dans Outils->Type de carte "ATmega328p on a breadboard (8 MHz internal clock)"
Dans le menu Outils->Programmateur sélectionner Arduino as ISP
Une dernière étape consiste à copier le bootloader 8mhz dans son répertoire au dessus de lui (je ne sais pas pourquoi il ne le trouve pas par défaut)
Copier donc
C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\atmega\ATmegaBOOT_168_atmega328_pro_8MHz.hex
Vers
C:\Program Files (x86)\Arduino\hardware\arduino\avr\bootloaders\
Vous devriez voir cela:
Etape 3 Branchements
Une fois la partie logicielle paramétrée nous voici à même de passer à l'étape physique de ce guide.Pour cela suivre les branchements ci dessous, on remarquera qu'ils sont ceux du site Arduino au delta près de l'alimentation de l'ATMEGA328P, je vous conseille de prendre une autre que celle de l'arduino Uno (dans mon cas un autre port USB de mon ordinateur):
Une fois les branchements réalisés nous pouvons passer à l'étape fatidique (celle qui pour ma part à planter des dizaines de fois avant que j'arrive à cette procédure qui fonctionne).
Etape 4 Chargement du bootloader
Vous êtes maintenant prêt, l'arduino Uno est relié au PC, la breadboard à l'arduino, l'atmega328P à une source 5V externe et l'ide arduino lancé sur votre pc. Le programmateur est sur Arduino as ISP et le type de carte sur ATmega328p on a breadboard (8 MHz internal clock).
Pour charger le bootloader il vous suffit de cliquer sur Outils->Graver la séquence d'initialisation:
Les diodes RX et TX de votre Uno devraient se mettre à scintiller et vous devriez voir apparaitre le message ci dessous dans votre IDE
"Gravure de la séquence d'initialisation terminée"
Bravo le bootloader 8Mhz est chargé sur votre Atmega328p!
Étape 5 Branchements et chargement d'un programme basique
Pour les branchements ce n'est pas compliqué il vous suffit de conserver les branchements précédents et de garder le sketch "Arduino as ISP" sur votre Arduino Uno (simple non?) il n'est donc pas nécessaire d'utiliser le rx/tx de votre arduino et d'enlever l'atmega328p du Uno.
Votre IDE doit toujours être configurés sur
Outils->Type de carte "ATmega328p on a breadboard (8 MHz internal clock)"
Outils->Programmateur -> "Arduino as ISP"
Ensuite choisissez un programme (blink par exemple en modifiant la durée d'allumage et d'extinction à 10000)
Cliquer ensuite sur Fichier->Téléverser avec un programmateur
Sources:
http://arduino.cc/en/Tutorial/ArduinoISP
http://arduino.cc/en/Tutorial/ArduinoToBreadboard
http://blog.biophysengr.net/2012/06/writing-sketches-to-atmega386p-pre.html
Article sous licence Creative Commons CC-BY-NC-SA
Bonjour,
RépondreSupprimerUn très grand merci pour la précision de la dernière commande avec l'image pour la (Ctrl+Maj+U), c'est un oubli dans tous les autres tutoriels qui parle de l'Arduino sur planche d'expérimentation.
L'ami René
Bonjour René,
RépondreSupprimerAvec plaisir, pour information suivant la température ambiante il se peut que vous rencontriez des difficultés pour charger le bootloader.
Si tel est le cas je vous invite à regarder le tutoriel (en anglais de Nick Gammon) qui marche à tous les coups car le UNO programmeur génère un signal d'horloge.
http://www.gammon.com.au/breadboard chapitre "Alternate clock source"
Chargez ensuite le programme ci dessous:
https://github.com/nickgammon/arduino_sketches/tree/master/Atmega_Board_Programmer
Dans le moniteur série taper L puis G pour programmer le bootloader
Cordialement
Bonjour,
RépondreSupprimerS'il vous plait j'ai besoin de votre aide,
je veux faire la gravure de la séquence d'installation d'un arduino nano en utilisant un arduino Mega comme ISP, mais malheureusement j'ai toujours ce message:"erreur lors de la gravure de la séquence d'installaton.
Bonjour,
SupprimerJe ne comprends pas pq vous voulez graver un bootloader sur un nano, celui d'origine ne correspond pas à votre besoin? Si c'est le cas quels sont les éléments différents sur le nouveau bootloader?
Ce commentaire a été supprimé par l'auteur.
RépondreSupprimerBonjour,
RépondreSupprimerMerci beaucoup pour ce tutoriel !
Je suis sur un projet de programmer un Attiny24 avec un arduino Leonardo.
Mais j'ai une erreur qui survient à chacune de mes tentatives :
The current selected board needs the core 'arduino:arduino' that is not installed.
recipe.preproc.macros est un schéma manquant
Erreur de compilation pour la carte ATtiny24/44/84
Avez-vous une idée ?
Merci !
Bonjour Nicolas,
SupprimerDe ce que je vomprends tu as l'erreur à la compilation, est ce que ta carte attiny24 est bien sélectionnée dans les cartes de l'ide arduino? Si oui il te faut verifier son paramétrage car elle ne semble pas bien paramétrée.
Bonjour ! Merci pour la réponse !
SupprimerAlors j'ai commencé par monter ma carte leo en ISP avec les 3 leds témoins. La compilation du sketch ArduinoISP passe sans problème.
En suite je configure l'ide pour que la carte de destination est le Attiny24 et que le programmateur est Arduino as ISP. (j'ai aussi essayé avec la modification Arduino as ISP (leonardo)).
La je mets le condensateur pour le reset et je vais pour graver la séquence d’initialisation. Mais ca passe pas. J'ai cette erreur :
java.lang.NullPointerException
at cc.arduino.packages.uploaders.SerialUploader.burnBootloader(SerialUploader.java:362)
at processing.app.Editor.lambda$handleBurnBootloader$11(Editor.java:2533)
at java.lang.Thread.run(Thread.java:745)
Erreur lors de la gravure de la séquence d'initialisation.
Comme si il n'arrive pas a communiquer avec. J'ai revérifié le câblage plusieurs fois, j'ai aussi essayer avec un arduino nano comme ISP mais sans succès.
et si j'ai quand même essayé de lancer un programme avec ctrl-maj-u et c'est une autre erreur :
The current selected board needs the core 'arduino:arduino' that is not installed.
recipe.preproc.macros est un schéma manquant
Erreur de compilation pour la carte ATtiny24/44/84
Je suis sur win10 et l'ide 1.8.1
Voila ! Vous savez tout.
Voila je redonne des nouvelles !
SupprimerJ'ai essayé avec un arduino UNO. Mais pareil. Même problème même message d'erreur.
Apres un peu de réflexion, j'ai résolu mes problèmes.
C’était mon core attiny24 qui n'allais pas.
Je l'ai supprimer et réinstaller depuis le gestionnaire de carte cette fois et miracle !
Ca fonctionne ! Je vais ressayer avec le Leonard.
Bonjour, Voici la configuration fonctionnelle.
RépondreSupprimer#################################
atmega328bb.name=ATmega328p Breadboard (8 MHz internal clock)
atmega328bb.upload.protocol=stk500
atmega328bb.upload.maximum_size=30720
atmega328bb.upload.speed=57600
atmega328bb.upload.tool=avrdude
atmega328bb.bootloader.low_fuses=0xE2
atmega328bb.bootloader.high_fuses=0xDA
atmega328bb.bootloader.extended_fuses=0xFD
atmega328bb.bootloader.path=arduino:atmega
atmega328bb.bootloader.file=atmega/ATmegaBOOT_168_atmega328_pro_8MHz.hex
atmega328bb.bootloader.unlock_bits=0x3F
atmega328bb.bootloader.lock_bits=0x0F
atmega328bb.bootloader.tool=avrdude
atmega328bb.build.mcu=atmega328p
atmega328bb.build.f_cpu=8000000L
atmega328bb.build.board=AVR_UNO
atmega328bb.build.core=arduino
atmega328bb.build.variant=standard
###############################
Merci. ;)
PS :
SupprimerLa dernière manipulation "Fichier->Téléverser avec un programmateur" efface le bootloader précédemment chargé en le remplaçant par le nouveau sketche !!!