Téléverser un sketch Arduino dans un ATmega328 via ArduinoISP

Bonjour,

Je souhaiterais programmer le sketch blink dans un ATmega328p vierge et sans bootloader.

J'ai téléversé le sketch arduinoISP dans ma carte arduino Uno pour programmer l'ATmega328p par ICSP.

De là j'ai 2 questions : - Comment compiler le sketch blink pour un ATmega328P vierge (avec l'oscillateur interne 8Mhz + prédivision par 8 donc tourne @ 1Mhz) ? Il y a une sorte de fichier makefile à modifier ?

  • Comment faire pour téléverser le sketch blink dans l'ATmega328p ? Parce que si je clic sur "Téléverser" ça va reprogrammer l'arduino et non l'ATmega328...

Merci d'éclairer ma lanterne !

Parce que si je clic sur "Téléverser" ça va reprogrammer l'arduino et non l'ATmega328...

Il faut cliquer sur Croquis / Téléverser avec un programmateur, en ayant sélectionné au préalable le programmateur dans outils.

@+

Au sujet de la première question, il me semble que cela se passe au niveau fuses.

https://forum.arduino.cc/index.php?topic=96006.0

@+

Un petit outil sympa pour changer les fuses :

http://www.engbedded.com/fusecalc

Ne pas oublier le brown-out detection en fonction de la tension d'alimentation envisagée.

@+

Il faut cliquer sur Croquis / Téléverser avec un programmateur, en ayant sélectionné au préalable le programmateur dans outils.

Merci, effectivement ça semble logique. Il faut choisir "Arduino as ISP" j'imagine.

Au sujet de la première question, il me semble que cela se passe au niveau fuses.

Les fusibles de mon ATmega328p sont ceux par défaut (L=0x62 H=0xD9 E=07). Les fusibles configurent matériellement le microcontrôleur. Cela étant, côté software il faut bien tenir compte de cette configuration pour compiler le sketch correctement. Dans WinAVR, par exemple, ça se fait grâce à un fichier MAKEFILE. Il me semble que dans le logiciel Arduino c'est rattaché au "type de carte" dans "outils". Reste à trouver comment ajouter un Type de carte correspondant à un ATmega328p vierge

Un petit outil sympa pour changer les fuses :

http://www.engbedded.com/fusecalc

Ne pas oublier le brown-out detection en fonction de la tension d'alimentation envisagée.

@+

Merci, à vrai dire je connaissait déjà :). J'utilise AVRDUDESS pour lire et programmer physiquement les fusibles.

myster1ous:
Reste à trouver comment ajouter un Type de carte correspondant à un ATmega328p vierge

Bonjour,

Voir ici (chapitre Minimal Circuit (Eliminating the External Clock))

Merci, j'ai édité le fichier board.txt pour que la fréquence d'horloge corresponde à la config des fusibles (1Mhz) et ça à fonctionné !

J'ai juste eu un warning dans la fenêtre du logiciel Arduino (Warning: Board breadboard:avr:atmega328bb doesn't define a 'build.board' preference. Auto-set to: AVR_ATMEGA328BB) mais apparemment sans conséquences.

La configuration "sortie usine" pour l'horloge est la suivante : oscillateur 8 Mhz interne diviseur d'horloge par 8 activé

Ce qui fait que le micro tourne à 1 MHz.

Atmel a fait son choix pour que brut de fonderie le micro tourne à la plus basse fréquence : --> c'est plus facile pour [u]SES[/u] tests.

myster1ous: J'ai juste eu un warning dans la fenêtre du logiciel Arduino (Warning: Board breadboard:avr:atmega328bb doesn't define a 'build.board' preference. Auto-set to: AVR_ATMEGA328BB) mais apparemment sans conséquences.

Tu peux ajouter

atmega328bb.build.board=AVR_ATMEGA328BBdans le fichier board.txt

68tjs:
La configuration “sortie usine” pour l’horloge est la suivante :
oscillateur 8 Mhz interne
diviseur d’horloge par 8 activé

Ce qui fait que le micro tourne à 1 MHz.

Atmel a fait son choix pour que brut de fonderie le micro tourne à la plus basse fréquence : → c’est plus facile pour SES tests.

Oui, oui, je sais bien c’est d’ailleurs ce que je disais dans mon 1er post :

[…]pour un ATmega328P vierge (avec l’oscillateur interne 8Mhz + prédivision par 8 donc tourne @ 1Mhz).

kamill: Tu peux ajouter

atmega328bb.build.board=AVR_ATMEGA328BBdans le fichier board.txt

Impeccable, le warning a disparu . Merci.