Graver un bootloader sur ATMEGA (et récupérer un ATMEGA après erreur ...)

Bonjour,

j'hésitais à poster entre une section de questions et cette section. Je vous laisse décider s'il faut le déplacer.

Comme j'envisage un montage Arduino autonome, je me suis essayé à la gravure de bootlader sur puces ATMEGA.
C'est assez documenté sur le net et sur ce même site, mais ce qui l'est moins, c'est lorsqu'un têtu comme moi veut quand même graver un bootlader sur ATMEGA pour le faire tourner en 16MHz en suivant le montage pour 8MHz ...

Yikes !

Après avoir cherché une solution, j'ai trouvé cette parade: brancher un crystal 16MHz sur les pins 9 et 10 de l'ATMEGA pendant qu'on grave le bootlader ATMEGA 8MHz.

Ca fait un peu vaudou, mais comme je m'y connais pas trop, je m'y prends certainement mal pour expliquer pourquoi ça fonctionne. Bref, j'ai tout mis ici, mais je veux bien qu'un pro en éléc me dise pourquoi ma solution fonctionne : http://thepolyscope.com/fr/graver-un-bootloader-sur-atmega328p-pu-avec-un-arduino-uno-et-sans-cristal/

Le petit plus, je fais mes tutos en deux langues, français et anglais, si ça peut servir à qqun : http://thepolyscope.com/en/how-to-burn-a-bootlader-on-atmega328p-pu/

Merci !

Je comprends pas vraiment : le montage "typique" c'est avec un quartz 16 mhz. De quel montage 8 mhz tu parles ? Avec oscillateur interne ?

Exactement, le montage "non typique" 8MHz utilise l'oscillateur interne.

C'est ce montage que j'ai privilégié dans ce tuto car il est accessible avec très peu de composants. Je n'avais pas d'oscillateur quand je l'ai essayé.

Pour autant, une fausse manip est vite arrivée, si l'on confond les tutos pour le montage 8MHz et 16MHz, mais ce n'est pas irrémédiable. C'est la solution à cette fausse manip que j'ai interprétée de différentes lectures et que je propose également, mais sans être sûr d'avoir bien compris pourquoi ça fonctionne ... :~

Hello,

Une solution encore plus simple : mettre la puce gravée en 16MHz à la place de celle de l'Arduino et le regraver en 8MHz. Pas besoin de cristal :wink:

+1

Je comprends pas pourquoi tu n'y es pas arrivé : à mon avis tu as gravé le bootloader 16 mhz sans crystal tout simplement

B@tto: C'est bien ça qu'il s'est passé. J'ai gravé le mauvais bootlader mais sans crystal (faut que je vérifie d'avoir bien expliqué, apparemment je suis pas clair dans mon tuto). Et au moment de regraver le bon, j'avais le message d'erreur.

XavierMiller : tu veux dire qu'on peut graver le bootlader 8Mhz en plaçant l'ATMEGA sur la carte Uno ? Le crystal soudé sur la carte ne l'empêche pas ? Et pas besoin de programmeur externe : juste le PC et l'IDE ?Si c'est bien ça, je le rajoute dans l'article ce soir (si tu permets ;)) C'est encore plus simple !

Loic_B:
B@tto: C'est bien ça qu'il s'est passé. J'ai gravé le mauvais bootlader mais sans crystal (faut que je vérifie d'avoir bien expliqué, apparemment je suis pas clair dans mon tuto). Et au moment de regraver le bon, j'avais le message d'erreur.

Justement c'est ça qui est étrange, sinon y'aurait énormément de problème à passer d'un oscillateur à un autre. Sauf erreur de ma part évidemment, je ne me suis jamais retrouvé face à cette situation.

Ok avec toi, on pourrait imaginer qu'il y a énormément de problème à passer d'un oscillateur à un autre vu ce que j'ai éprouvé. Mais j'ai trouvé quelques infos supplémentaires en lisant 8MHz internal oscillator: success! - Microcontrollers - Arduino Forum et "Converting" a ATMEGA328P with Uno bootloader to 8mhz - Microcontrollers - Arduino Forum.

On y lit entre autre "Note, if you're changing the bootloader on a chip that previously was configured to use an external clock, you'll need to have that external clock hooked up during the first bootloader burn."

Donc c'est plus la configuration horloge externe de mon premier burn qui nécessite l'utilisation du crystal lors du deuxième burn. Et non pas la configuration 8 ou 16 MHz. Et donc pas de difficultés à priori à passer d'un oscillateur à un autre tant qu'on utilise une horloge externe, pusique l'arduino ainsi configuré s'attend à avoir un signal d'horloge externe. Je commence à y voir un peu plus clair ...

(Bon, du coup, pour la proposition de XavierMiller, sans références ou exemples supplémentaires sur la possibilité de graver un bootloader 8MHz en enfichant directement l'ATMEGA sur la carte Arduino, je considère que ca ne doit pas être possible D'autres avis ?)

De ce que je comprends : le problème se pose si on l'a configurer en oscillateur externe (donc 16 mhz "par défaut") et qu'on le met sur une platine dépourvu de de ce fameux quartz. Maintenant, si l'atmega est graver en 8 mhz interne, tu peux brancher ce que tu veux sur les pin OSC ça ne changera rien.

Donc à vérifier mais comme ça je dirais : graver en 8 mhz oscillateur interne directement sur une platine Arduino (avec quartz donc) c'est tout à fait possible quelque soit ce qu'il avait avant (8 interne ou 16 externe), en revanche le problème se pose sur un standalone où comme toi on a graver en oscillateur externe alors qu'il n'y en a pas. Il faut alors rebrancher un quartz 16 (ou bien remettre l'atmega sur une platine nono) pour "relancer" l'atmega et pouvoir graver un nouveau bootloader