Bonjour à tous.
Sur un PCB maison, à base d'atmega328PB-AU, je bloque depuis 2 jours sur le pourquoi je n'arrive pas du tout à téléverser le bootloader pour pouvoir programmer le PCB avec l'ide arduino.
J'obtiens systématiquement cette erreur :
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\PC\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.2.2\avrdude.conf
Using Port : COM3
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATmega328PB
Chip Erase delay : 10500 us
PAGEL : PD7
BS2 : PC2
RESET disposition : possible i/o
RETRY pulse : SCK
Serial program mode : yes
Parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Alias Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- -------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 20 4 0 no 1024 4 0 3600 3600 0xff 0xff
flash 65 6 128 0 yes 32768 128 256 4500 4500 0xff 0xff
lfuse 0 0 0 0 no 1 1 0 4500 4500 0x00 0x00
hfuse 0 0 0 0 no 1 1 0 4500 4500 0x00 0x00
efuse 0 0 0 0 no 1 1 0 4500 4500 0x00 0x00
lock 0 0 0 0 no 1 1 0 4500 4500 0x00 0x00
signature 0 0 0 0 no 3 1 0 0 0 0x00 0x00
calibration 0 0 0 0 no 1 1 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel STK500 version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
avrdude: device signature = 0x000000 (retrying)
avrdude: device signature = 0x000000 (retrying)
avrdude: device signature = 0x000000
avrdude main() error: Yikes! Invalid device signature.
avrdude main() error: expected signature for ATmega328PB is 1E 95 16
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
Failed chip erase: uploading error: exit status 1
J'utilise un arduino UNO R3 en temps que ISP avec la configuration suivante :
Le cablage entre arduino uno et le pcb maison que j'ai effectué est le suivant :
pin 13 uno (SCK) -> pin 17 du 328pb (PB5)
pin 12 uno (MISO) -> pin 16 du 328pb (PB4)
pin 11 uno (MOSI) -> pin 15 du 328pb (PB3)
pin 10 uno (SS) -> pin 29 du 328pb (PC6_reset)
En observant a l'oscillo la chute de tension sur la pin reset du 328pb au demarrage du téléversement, la tension chute systématiquement de 4.9V à 4.5V uniquement.
J'ai pensé que cela était anormal, peut être dû au condo placé sur le pin reset du 328Pb, j'ai donc déssoudé le condo et re-essayé, mais rien n'y fait, la tension chute toujours de la même façon.
Quand je dis il vient, la dernière réponse date de ce matin, tu n'as pas cherché beaucoup.
Je ne suis pas un grand spécialiste, mais Arduino mélange configuration du microcontroleur et bootloader.
Pour utiliser un microcontroleur avr il faut configurer les "fuses" qui ne sont plus des fusibles mais de l'eeprom très particulière.
Ensuite, si on veut, mais ce n'est pas obligatoire , on peut charger un bootloader pour pouvoir programmer au travers d'une interface USB/série.
Si on n'a pas de bootloader il faut programmer en mode ISCP, le même mode qui sert à charger le bootloader.
Ces opérations se font en utilisant le programme fourni par Atmel : avrdude.
La documentation d'avrdude est publique, il suffit de la chercher et de la télécharger.
Les choix pour les fuses : il suffit de regarder la datasheet. Il semble que ce soit les mêmes que pour la version 328p.
Le bootloader, ben il faut en trouver un qui soit compatible avec le 328PB.
Et cela ne court pas les rues, Arduino ne s'étant pas interessé au 328PB, n'ayant visiblement aucune intention de continuer dans les micro 8 bits.
Déjà dit sur l'autre post sur le même sujet :
L'ATMega328P est entré en phase de fin de vie et coute plus cher que le 328PB.
Donc plus aucune possibilité de voir des façonniers passer des commandes de 328P.
Bonjour @68tjs , je n'avais effectivement pas vu ce post, en cherchant sur gogole...
Neanmoins, ce post rejoins pas mal d'autres post que j'ai lu, càd que plusieurs solutions existent. J'ai essayé plusieurs artifices lues, mais ne marche pas dans mon cas.
C'est bien cela que je voulais eviter, mais je commence à comprendre que je n'aurai d'autres choix.
J'ai donc choisi d'utiliser avrdude, mais je n'y comprends pas encore grand chose du fonctionnement :
J'ai essayé de lire l'état du registre des fuses de mon 328pb avec cette commande (même branchement avec arduino uno du post 1)
Bonjour @JMe87
Merci pour lien.
J'ai déjà installé le package minicore (on peut le voir sur la 1ère image du 1er post.
Il y a vraissemblablement un problème de communication avec le uno et le 328PB. C'est pourquoi je souhaite donc vérifier en 1er l'état des fuses d'horloge.
J'ai eu des problèmes pour pour programmer le boot loader avec minicore (avec un usbasp ou un usbtinyisp).
J'ai remplacé le avrdude et anrdude.conf qui se trouve sous minicore\tools par avrdude version 7.0 et la plus de problème.
Si tu es sous windows, je te conseille d'utiliser avrdudess (version 2.14) qui est une interface graphique pour avrdude.
D'après @kamill , si tu suis l'autre fil de discussion, les fuses sont identiques et il n'a pas de problème avec les 328PB en les utilisant comme des classiques 328P.
Il faut juste sélectionner "old bootloader".
Historique pour comprendre cette histoire d'old bootloader et optiboot
Il existe deux versions du bootloader.
Quand la nano est sortie la première version du bootloader était en service, il oocupait 1 koctets de mémoire.
La UNO est sortie avec la deuxieme version (optiboot) qui occupait 500 octets de moins.
Plusieurs années après, Arduino a décidé de passer "SA" nano avec le nouveau bootloader.
Les fabricants de clones chinois ont refusé de modifier leurs chaines de fabrication pour gagner 500 octets et livrent toujours avec l'ancien bootloader.
Et donc avec clone dans l'IDE il faut choisir "Old bootloader".
Sur l'autre post @jfs59 indique un site où télécharger les bibliothèques complémentaires pour utiliser totalement les 328PB (2 UART, 2 I2C, etc.....).
Important : Deux fils simultanés pour le même sujet c'est un de trop. C'est des informations perdues.
Je ne sais pas fusionner deux fils de discussions, peut être que quelqu'un le fera,
en attendant je te demande de continuer sur le premier qui a été ouvert sachant que la solution sera la même pour vous deux.
Je selectionne tout d'abord le programmer arduino pour voir si le logiciel detecte bien :
Sur la 1ère ligne de commande, je suis censé detecter l'arduino uno 1 connecté au PORT 6 (un arduino uno sans isp) -> la commande fonctionne, elle detecte bien
Sur la 2ème ligne, je connecte cette fois ci l'arduino uno 2 (avec programme ISP à l'intérieur), pareil, avrdudess le reconnais.
Je branche ensuite le arduino 1 (esclave) sur le arduino 2 (en tant que maitre) comme si je voulais uploader le bootloader (cables miso, mosi etc).
Je selectionne donc sur le logiciel avrdudess le programmer Arduino ISP Programmer (d'ailleurs au passage, il y a au choix 2 qui portent exactement le meme nom, étrange...) et la, erreur...
La même erreur se produit lorsque je connecte à l'arduino maitre, mon pcb perso 328pb.
J'ai donc tendance à croire que je ne dois pas du tout savoir utilisé avrdudess ou alors il y en une configuration à faire ?
Merci de m'aider car là, c'est le flou total ^^
(PS, ne pas tenir compte des hfuse... c'était pour essayer l'upload de optiboot)
Je me demande aussi si au final, un uno en tant qu'ISP fonctionne vraiment dans la problèmatique que j'ai ?
Ne faudrait-il pas obligatoirement utiliser un programmer comme USBTinyISP pour success ?
Ca fait longtemps que je ne l'ai pas utilisé avec une carte arduino, mais ça fonctionne bien avec un arduino comme isp.
Il faut que tu sélectionnes 'Arduino' comme programmateur. Mets un baudrate de 19200.
Non la ce n'est pas idem.
Il a bien détecté le programmeur, mais le programmeur n'arrive pas à se connecter au processeur.
Vérifie la connexion au processeur. Il est bien alimenté? Horloge interne?
Il est bien alimenté, j'ai du 5V sur les broches.
Pour l'horloge interne, comment faire pour le savoir ? sachant que je ne peux acceder au processeur...