Programmation ATmega328PB

Bonjour,
Je cherche à graver le Bootloader d'une Nano ayant un ATMega328PB (et non pas un ATmega328P) en utilisant une autre carte Arduino (UNO) pour programmer la Nano.
Il suffit d'uploader l'example "Arduino as ISP" dans la UNO puis de sélectionner la carte cible (ici Nano), et de faire "Outils->Graver le Bootloader".
Avec les cartes équippées d'AT328P ça marche nickel, mais avec le AT328PB ça plante, puisqu'il aurait été trop simple que l'IDE arduino reconnaisse fournisse la possibilité de choisir ATmega328PB pour les Nano.
Pour ce faire j'ai installé les cartes supplémentaires "Minicore" qui permettent de sélectionner ATMega328, puis ensuite dans "variantes" le ATmega328PB: dispo ici: https://github.com/MCUdude/MiniCore#getting-started-with-minicore

Mais ça ne fonctionne pas, j'ai le message d'erreur suivant:

Arduino : 1.8.19 (Windows 10), TD: 1.58, Carte : "ATmega328, Yes (UART0), EEPROM retained, 328PB, BOD 2.7V, LTO disabled, External 16 MHz"



avrdude: Version 7.1-arduino.1

         Copyright the AVRDUDE authors;

         see https://github.com/avrdudes/avrdude/blob/main/AUTHORS



         System wide configuration file is C:\Users\admin\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.2.2\avrdude.conf



         Using Port                    : usb

         Using Programmer              : stk500v2

avrdude: usbdev_open(): did not find any USB device "usb" (0x03eb:0x2104)

avrdude main() error: unable to open programmer stk500v2 on port usb



avrdude done.  Thank you.



Erreur lors de la gravure de la séquence d'initialisation.

Quelqu'un peut-il m'aider, ça fait des jours que je cherche !
Merci

Il me semble qu'il faut choisir "Arduino as ISP" comme programmeur.

Regarde cette vidéo :

Il me semble qu'il faut choisir "Arduino as ISP" comme programmeur.

Tu as tout à fait raison et toutes les vidéos montrent cet exemple, qui fonctionne parfaitement avec un ATmega328P, mais qui plante avec un ATmega328PB.
La vidéo que tu montres permet de charger un bootloader dans un chip seul, ce que je veux faire c'est charger un bootloader dans un Nano assemblée.
Et elle a un 328PB...
Donc il doit y avoir une manip permettant de le faire pour un 328PB, je fondais beaucoup d'espoir sur les "Minicore", mais ça ne marche pas non plus.
D'autres idées ?

Le vocabulaire utilisé par Arduino SA est approximatif.

Ce qu'Arduino SA appelle graver la séquence d'initialisation fait deux actions totalement indépendantes l'une de l'autre :

  1. Configurer les "fuses"
  2. graver le bootloader.

Les registres des deux micros n'étant pas les mêmes, le nombre d'UART, de ports numériques n'étant pas les mêmes, je me pose deux questions auxquelles je n'ai pas la réponse, sachant qu'Arduino SA a complètement ignoré le 328 PB.

  1. les "fuses" d'un 328PB sont-ils les mêmes que ceux d'un 328P ?
  2. le bootloader est-il le même ?

Je sais par ailleurs qu"Elektror avait sorti une carte équipée d'un 328PB et le framework adapté au 328PB.
Peut -être faut-il voir du coté d'Elektror ?

Bonjour

@jfs59:
Great info !
The most pleasant approach is the Github one, defining a new ATmega328PB board: this should be included by default in the Arduino IDE...
I have followed the instructions, installed the new ATmega328PB board, and the "Burn Bootloader" sequence was successful.

But 2 major problems appeared:
1-.The sketches that worked on the Nano did not compile anymore: I get an error at the compilation level: even the compilation was faulty, not the upload.
I had been obliged to remove the "ATmega328PB-Arduino-Nano-Clone-with-Bootloader-master" folder from the ```
C:\Users<My Username>\AppData\Local\Arduino\packages\ATmega328PB-with-Bootloader\hardware folder

in order to have successful compilations of the previous ".ino" programs !
What a mess...

2-.Impossible to upload a program on the recently burned Nano, probably because I had to remove the above mentioned folder, but no other choice to get back a working IDE environment.

I am so disappointed that I am going to stop there for today !

Will try (maybe) on a notebook with a fresh Arduino IDE installation, because I had to manually install the .ZIP file in the ```
C:\Users<Your Username>\AppData\Local\Arduino\packages\ATmega328PB-with-Bootloader\hardware folder (the automatic download with the json file in the File->Preferences did not work).

What a mess to get a simple clone recognized by the IDE...

Tu peux écrire en français, s'il te plait.

  1. ici, c'est un sous forum francophone, tous les lecteurs doivent pouvoir comprendre les propos échangés.
    Les réponses ne sont pas adressées à une seule personne, mais à tout le monde sans exception.

  2. @jfs59 parle un français parfait, il t'a juste donné deux liens à lire sans les accompagner de commentaires.

  3. A ma connaissance, mais je ne sais pas tout, seul Electror a commercialisé des cartes à base d'atmega328pb.
    Electror à mis à disposition le framework qui se charge dans l'IDE comme ceux d'Espressif, STMicro, etc
    Où a tu acheté cette nano 328PB ?

Oui désolé ! je me suis rendu compte que j'avais répondu en anglais (réflexe) alors que je suis français !! sorry :rofl:,

A ma connaissance, mais je ne sais pas tout, seul Electror a commercialisé des cartes à base d'atmega328pb.
Electror à mis à disposition le framework qui se charge dans l'IDE comme ceux d'Espressif, STMicro, etc

Je viens d'écrire à Elektor pour savoir où trouver ce Framework, car j'ai les Archives Elektor de 1979-2019, mais je n'ai rien trouvé dedans.
Dès que je reçois leur réponse, je vous dis ce qu'il en est.

J'ai trouvé sur Github une définition de carte ATmega328PB, qui rajoute le choix d'une carte ATmega328PB dans le Gestionnaire de Cartes de l'IDE selon ce qui se fait habituellement.
Le lien est ici: https://github.com/0x6470/ATmega328PB-Arduino-Nano-Clone-with-Bootloader

J'ai dû installer le package manuellement (l'ajout du ".json" dans Préférences n'a rien fait), l'IDE me dit qu'il a gravé le Bootloader sur la Nano 328PB, mais non seulement je ne peux rien uploader dans la carte, mais en plus tous les programmes ".ino" qui fonctionnaient ne se compilaient plus en choisissant une Nano classique.
J'ai donc dû supprimer le dossier pour retrouver mes programmes '.ino" compilables comme avant !
Je ne m'explique pas ce qui s'est passé ?? Mon IDE est la v1.8.15, certes avec beaucoup de choses sur mon PC, mais les cartes que j'ai précedemment installées n'ont jamais créé ce genre de pb.

Je suis entièrement d'accord avec toi, et c'est l'approche que je voulais: avoir une carte supplémentaire 328PB dans l'IDE; Mais pourquoi ces problèmes ? peut-être ai-je mal installé manuellement le ".zip" de Github ??

Où a tu acheté cette nano 328PB ?

Comme beaucoup ce sont des clones chinois de la Nano: ils sont tous équipés du 328PB, sont très fiables, et le 1er pb (et le seul depuis 10 ans, pourtant utilisées avec des programmes complexes) que je rencontre c'est cette gravure de bootloader...

Salut,
pour Elektor de mémoire il s'agit du bootloader arduino unoR4 qui prend en charge le 328PB.
Cette puce offre quelques périphériques et broches en plus.

ps je viens de voir que arduino sort aussi une uno R4 mais il ne s'agit pas de la même puce.

J'ai envoyé la question à Elektor, mais aucune réponse et je n'ai rien trouvé dans leurs archives 1979-2019 que j'avais achetées sur Clef USB; je pense que je n'aurai pas de réponse....

Depuis je contacte systématiquement les vendeurs pour m'assurer que les Nano sont livrées avec le 328P et non pas le 328PB... Il m'en reste une avec un 328PB et je rois qu'elle va partir à la poubelle puisqu'impossible d'y mettre un bootloader !

Penses-tu que la manoeuvre suivant pourrait fonctionner:
-connecter une UNO R3 classique et y charger l'exemple "Arduino as ISP"
-relier la cible Nano équipée d'un AT328PB à la Nano R3.
-déclarer que la cible est une UNO R4
-faire Outils->graver le Bootloader
???
Sinon ton idée serait d'acheter une UNO R4 et de l'utiliser pour programmer la cible qui serait une Nano 328PB ??

Merci !

Peut-être voir ici, Nick a justement ajouté le 328PB à la liste des CPU supportés

Des explications ici:

et là

Un bootloader n'est nullement requis pour programmer un atmega. Un bootloader c'est du confort.

Comme programmeur de fuse on peut utiliser une carte nano ou Uno avec le programme qui va vient: mais que le programme pour transformer une carte en programmeur, pas ce qu'ils appellent graver la séquence d'initialisation qui est pour le 328P, ou un programmeur genre TinyUSB ou USBasp, ce qui est plus simple.
Ce programmeur sera utilisé conjointement avec le logiciel avrdude d'Atmel.

La notice d'avrdude est claire et avec des exemples.

Il y a pour moi deux "hics" :

  1. Pemier "hic"
    Quelle configuration des fuses faut-il mettre ?
    Par exemple pour faciliter le tri sous pointes avant découpe du wafer, "naturellement" la conception de la puce fait que l'horloge est interne ( 8 MHz) et le prédiviseur d'horloge par 8 activé.
    Le micro tourne à 1 MHz d'horloge.

Il faut suprimer le diviseur par 8 et configurer le micro pour qu'il fonctionne sur quartz externe. Il y a des options de démarage d'horloge également.
Est-ce pareil pour le 328PB ? Probablement.
En tout cas il faut vérifier que les codes à envoyer sont les mêmes.

Tout ceci n'a strictement rien à voir avec le bootloader.

  1. Deuxieme "hic"
    les registres ne sont pas les mêmes : il y a 2 UARTs, un port suplémetaire (le E il me semble) pour permettre aux deux seules entrées purement analogiques A6 et A7 de devenir comme A0 à A5 des E/S digitales dotées de possibilité de mesures analogiques.

C'est ce deuxième "hic" qui pour moi est le plus bloquant.
Combien il y a-t-il de bibliothèques à mettre à niveau ?

C'est ce travail qu'Elektor avait fourni et qu'il faudrait récupérer.

Un bootloader n'est nullement requis pour programmer un atmega. Un bootloader c'est du confort.
Habituellement je programme mes NANO en utilisant le fichier ".hex" (généré par l'IDE lors de la compilation initiale) que j'envoie avec AVRDUDESS: le gros avantage c'est qu'une fois que j'ai récupéré le ".hex" je ne dépends plus d'éventuelles mises à jour de bibliothèques, et ça j'adore.

Le problème c'est que pour les NANO 328PB, AVRDUDESS n'arrive pas à les programmer si je n'y ai pas mis un bootloader (?), et je ne sais pas pourquoi...
Et la méthode connue d'utiliser une UNO "Arduino as ISP" pour mettre le bootloader dans une NANO fonctionne pas si la NANO a un 328PB.

Je trouve débile que l'IDE ne supporte pas le 328PB (complètement incompréhensible), et l'ajout de cartes Minicore incluant le 328PB m'a fait planter l'IDE qui refusait de programmer la moindre carte ensuite...

Après ma NANO est peut-être morte (?) mais je fais désormais très attention de n'acheter que des NANO avec des 328P: la Nano 328PB que je désespère de pouvoir à nouveau programmer va partir directement à la poubelle.

La poubelle est finalement la meilleure solution: ras le bol de perdre des jours pour 3€...

AVRDUDE ne programme pas directement ton CPU. Il communique avec un programmeur externe qui va envoyer le code au port de configuration du CPU ou il parle au bootloader qui simule l'interface de communication d'un programmateur (STK500).
En principe, si ton 328PB n'a pas de bootloader, tu devrais pouvoir utiliser une UNO "Arduino as ISP" et l'indiquer comme programmeur à AVRDUDE

Ce n'est que ton avis.

Arduino fourni une IDE pour SES cartes.
Si l'IDE arduino peut être utilisée avec STM32, ESP32 c'est parce que STMicro et Espressif écrivent le framework adapté.
C'est ce qu'avait fait Elector en son temps.

Arduino n'a pas fait le choix d'utiliser un atmega328PB, l'annonce d'un UNO R4 32 bit confirme qu'Arduino a depuis longtemps décidé l'abandon des avr 8 bits.
Tu n'as pas le droit de reprocher à Arduino de ne pas gérer les produits concurents.

Arduino est cohérent avec lui même.

AVRDUDESS je ne connais pas, probablement une "windowserie".
Je ne connais qu'avrdude que j'avais utilisé il y a très longtemps sous Linux en ligne de commande. Sa documentation est très claire.

Avrdude n'a pas besoin de bootloader puisque c'est grace à avrdude que l'on peut graver un bootloader, c'est assez cohérent !

Avrdude utilise le mode ISCP du micro avr. ISCP utilise momentanément au démarage les pins SPI.

Attention ISCP n'est pas SPI : au reset ces pins sont en mode ISCP, en fonctionnement normal elles passent ensuite en mode SPI.

De toute façon je ne sais pas si tu as bien compris que :

  • le réglage des fuses : il suffit de lire la datasheet de l'atmega328PB
  • le bootloader : où tu le trouve, ou tu t'en passe : tu gagnera entre 500 et 1000 octets pour le programme
  • le framework : ou tu retrouves celui d'Elektor, ou tu regardes ce qui a été fait pour le 328P et tu t'en inspires.

Presque une .NETserie serait plus juste, donc aussi exécutable sur Linux.
mais cela utilise de toute façon Arvdude, puisqu'il s'agit uniquement d'une interface graphique.

Bonjour,

J'ai plusieurs cartes nano avec des atmega328PB. Elles étaient fournies avec "old bootloader" et fonctionnaient très bien tel quel.

Pour rationaliser mes cartes j'ai voulu y installer le nouveau bootloader (optboot).
J'ai fait ça avec avrdudess (dernière version 2.14/avrdude 7.0)
L'atmega328PB est bien reconnu


Ensuite j'ai programmé le bootloader

Ensuite je l'utilise sous l'IDE comme une nano 'normale'. Je n'utilise pas les fonctions supplémentaires de l'atmega328PB

J'utilise un UsbTiny comme programmateur, mais je pense que ça devrait fonctionner pareil avec un Arduino as ISP.

Oui j'ai fait exactement pareil que toi, avec la même version de AVRDUDESS, et ça a marché parfaitement aussi.
Là où ça coince c'est qu'ensuite je n'arrive plus à remettre un bootloader une 2ème fois, mais bon j'ai décidé de ne plus perdre de temps pour quelques euros: je fait juste attention que mes nouvelles Nano soient équipées de 328P, ce qui est facile.

Je ne suis pas à l'abri que la NANO ait tout simplement rendu l'âme et génère ces problèmes bizarres, ça arrive, mais pas le temps de continuer à chercher, les Nano 328P ne posant aucun soucis.

Sinon je passe sur des STM32 pour mes projets nécessitant davantage de puissance (j'adapte progressivement mes circuits imprimés au STM32), mais il y a encore des projets où un 8 bits fait l'affaire.

Merci à ceux qui m'ont aidé, pour moi le sujet est "résolu" (d'une certaine manière, en restant sur du 328P classique et en poubellisant la carte qui est peut-être tout simplement morte...).

Bonne soirée