ATmega 328PB Bootloader Probleme

Hallo,

nach erfolgreichem layouten meiner Platine wollte ich diese nun Programmieren.
Hierbei habe ich versucht den Bootloader zu flashen leider ohne Erfolg unten stehen meine Quellen nach denen ich mich gerichtet habe. Der 10µF Kondensator wurde auch berücksichtigt.

Nun meine Frage, hat jemand hinbekommen, den ATmega328PB zu flashen und wenn ja wie?
Es kann ja nicht sein, dass ich nach 6 Stunden noch keine Anleitung gefunden habe welche funktioniert.

Kann es sein, dass es eine neue Version vom 328PB gibt, bei meiner früheren Version der Platine welche einen ATmega328PB-AU verbaut hatte ging es, jedoch funktioniert es nicht mit den ATmega328PB-U.

Im Anhang befindet sich die Fehlermeldung aus der IDE, sowie die Board- und die Schaltplandatei.

Quellen:
https://www.elektormagazine.de/files/magazine/2016/dolo/150790%20Elektor%20Uno%20R4%20Installation%20%20Test.pdf

Link zu den EAGLE Dateien:
https://we.tl/t-DgXbdfLib9

IDE Fehlerm..txt (3.54 KB)

Hast du einen Quarz am Controller angeschlossen ?

Leider sind das keine Links, sondern nur URL, wovon das pdf nicht funktioniert.
Links kann man anklicken.

Hallo,

ich hatte mir auch eine Platine mit ATmega328PB gebaut. Habe auch das Package von MCUdude in Verwendung. Als Bootloader habe ich von dem das optiboot File mit uart0, 115200 Baud und 16MHz geflasht. Allerdings habe ich einen AVRISP mkII zum flashen, gibts leider nicht mehr.

Zum Flashen. Nicht gleich drauflos flashen. Das ist ungesund.
Erstmal einen einfachen Kontaktversuch starten.
In meinem Fall sieht das so aus.

avrdude -c avrispmkII -p m328pb -v
oder
avrdude -c avrispmkII -p m328pb -v -P usb

Vermutlich ist schon dein µC Name "atmega328bp" falsch, den wird es in der avrdude.conf nicht geben. Versuch das erstmal mit meinem adaptierten Bsp. Die Port Option bitte so -P COM3

Meine komplette Befehlszeile lautet bei mir dann:

avrdude -c avrispmkII -p m328pb -v -P usb -U flash:w:"C:\avrToolchain\avrdude\ATmega328PB\optibootATmega328PB_UART0_115200_16MHz.hex":i -e

Die Fuses solltest du vorher einstellen.

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

Wenn ich mir allerdings deinen Schaltplan anschaue, ist mir nicht ganz klar ob das überhaupt funktioniert. Ich betrachte nur den Teil vom µC links unten. Die Klemmleiste macht mich stutzig mit der grauen Beschriftung. Ist das dein ISP Port? Desweiteren werden sicherlich deine Motoren während des Flashvorgangs zucken, weil die Pins die in die Schaltung führen nicht getrennt werden. Das solltest du abklären bzw. mir/uns erklären wie das gedacht ist. Ich kann ja auch einen Denkfehler beim lesen haben.

TO Schaltplan Ausschnitt

Edit:
beim nächstenmal hängste den Schaltplan bitte als .pdf ran. Hat nur 38kB.

In Eagle Datei > Drucker einrichten, Drucker "in eigene Datei pdf"
Papiergröße A3 oder andere passendes Format das man etwas sieht
Danach Datei > drucken, hier in Ausgabedatei Pfad ändern und Name anpassen.
Fertig.

TO Schaltplan komplett.pdf (37.3 KB)

Das Schaltbild des TO ist allerdings sehr ungewöhnlich. Konnte ich mir zuvor nicht ansehen.

Im Schaltbild sind div. Kondensatoren als Widerstände gezeichnet. Der Spannungsregler hat keinen GND-Anschluss.

HotSystems:
Hast du einen Quarz am Controller angeschlossen ?

Leider sind das keine Links, sondern nur URL, wovon das pdf nicht funktioniert.
Links kann man anklicken.

@HotSystems
Habe einen 16MHZ Quarz angeschlosse. Schaltbild ist bisschen verkehrt wegen den Widerstände, in der Realität sind aber Kondensatoren eingebaut wo die Widerstände eingezeichnet sind.

@Doc_Arduino
Habe mal die avrdude.conf angehängt.

Welche Signatur hat bei dir der 328PB?
Gibt es einen Unterschied zwischen den 328PB-AU und den 328PB-U bei den Signaturen?
Den Link [url=Bootloader für Atmega328pb - Deutsch - Arduino Forum werde ich die Tage mal probieren.

Kannst du mir ne Alternative zum AVRISP mkII empfehlen, hätte diesen gefunden
[url=https://www.amazon.de/gp/product/B00KM6ZA9I/ref=oh_aui_detailpage_o08_s00?ie=UTF8&psc=1[/url]

Auszug aus avrdude.conf (Zeile 2421)

#
------------------------------------------------------------
# ATmega328PB
#------------------------------------------------------------

part parent "m328"
    id			= "m328pb";
    desc		= "ATmega328PB";
    signature		= 0x1e 0x95 0x16;

    ocdrev              = 1;

    memory "efuse"
  size = 1;
  min_write_delay = 4500;
  max_write_delay = 4500;
  read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0",
          "x x x x x x x x o o o o o o o o";

  write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0",
          "x x x x x x x x x x x x i i i i";
    ;
;

Die Devicesignatur 0x0 ist immer falsch.
Die deutet auf einen Fehler hin, das meist nichts ausgelesen werden kann.
Das tritt auch auf, wenn der Oszillator im Controller nicht arbeitet.
Kann aber auch andere Ursachen haben.

Hallo,

Signatur lautet: 0x1E9516, also wie in der .conf steht. Eine weitere Unterscheidung gibts da nicht.

Wegen deinem Problem. Deswegen solltest du erstmal nur einfache Kontaktaufnahmen/Abfragen mit avrdude starten, solange bis das klappt. Vorher brauchst mit Flashen oder Fuse ändern nichts probieren. Wenn du einen jungfräulichen ATmega µC hast, taktet der interne RC mit 8MHz mit aktiven 1/8 Bit. Also taktet der mit sicheren 1MHz. Der ATmega328PB hat noch ein Clock Fail Detect Feature, der taktet immer, im dümmsten Fall wieder mit internen Takt, spätestens nach Reset. Wie das genau funktioniert steht im Manual. Müßte ich jetzt auch erst wieder nachlesen. Auf jeden Fall kann man den Typ bei falscher/defekter Taktquelle nicht verfusen. Man bekommt ihn immer zum Leben erweckt. Wenn du noch keine Fuse ändern konntest, taktet der sowieso noch mit dem internen Takt.

Du solltest mindestens die Spannungsversorgung, ISP Verkabelung und Resetpegel prüfen/messen. Ich vermute irgendein Anschlussproblem.

Wegen Programmer. Wenn es etwas kosten darf, nimmste den Atmel-ICE mit Kabel. Der kann auch aktuelle ATmega µC mit UPDI ansprechen. Wenn es etwas günstiges sein soll, kann man vielleicht einen Diamax USB ISP-Programmer für Atmel AVR nehmen. Wäre ein reiner ISP Programmer.

So endlich Zeit gehabt mal die ganze Platine auf Fehler beim Löten sprich kalte Lötstellen und so zu prüfen.
Fehler sind keine vorhanden.

Dann mit AVRDude die Verbindung geprüft und folgendes erhalten:

avrdude: Version 6.3, compiled on Feb 17 2016 at 09:25:53
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Marvin\avrdude\avrdude.conf
"

         Using Port                    : COM3
         Using Programmer              : arduino
         AVR Part                      : ATmega328PB
         Chip Erase delay              : 9000 us
         PAGEL                         : PD7
         BS2                           : PC2
         RESET disposition             : dedicated
         RETRY pulse                   : SCK
         serial program mode           : yes
         parallel program mode         : yes
         Timeout                       : 200
         StabDelay                     : 100
         CmdexeDelay                   : 25
         SyncLoops                     : 32
         ByteDelay                     : 0
         PollIndex                     : 3
         PollValue                     : 0x53
         Memory Detail                 :

                                  Block Poll               Page
      Polled
           Memory Type Mode Delay Size  Indx Paged  Size   Size #Pages MinW  Max
W   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
-- ---------
           eeprom        65    20     4    0 no       1024    4      0  3600  36
00 0xff 0xff
           flash         65     6   128    0 yes     32768  128    256  4500  45
00 0xff 0xff
           lfuse          0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  45
00 0x00 0x00
           calibration    0     0     0    0 no          1    0      0     0
 0 0x00 0x00
           signature      0     0     0    0 no          3    0      0     0
 0 0x00 0x00

         Programmer Type : Arduino
         Description     : Arduino
         Hardware Version: 3
         Firmware Version: 4.4
         Vtarget         : 0.3 V
         Varef           : 0.3 V
         Oscillator      : 28.800 kHz
         SCK period      : 3.3 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: Expected signature for ATmega328PB is 1E 95 16
         Double check chip, or use -F to override this check.

avrdude done.  Thank you.

@Doc_Arduino habe mal den ARVDUDE-Ordner von dir verwendet (#65) Bootloader für Atmega328pb - Deutsch - Arduino Forum

Verbindung klappt also schonmal, könnte dann jetzt versuchen den Bootloader über ARVDude zu flashern oder ?

Hallo,

sieht doch mal gut aus. Die fehlende Vtarget kann am anderen Programmer liegen, dass die Daten nicht ausgelesen/übertragen werden. Der µC selbst hat hoffentlich seine 5V Spannungsversorgung und die Massen sind verbunden. Wenn avrdude sich so "meldet" besteht eine funktionierende Verbindung. Dann kannste mal den Bootloader flashen. Ich drück die Daumen.

Okay alles klar.
Die 5V und Masse sind vorhanden und kommen auch am µC an.

Warum kommt den die Meldung beim testen der Verbindung?

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: Expected signature for ATmega328PB is 1E 95 16
         Double check chip, or use -F to override this check.

Bevor ich den Bootloader flashe muss ich die Fuse-Bits setzen oder?
Sprich den Befehl eingeben:

avrdude -carduino -p m328pb -v -PCOM3 -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m

Jedoch kommt auch da die obrige Meldung, ebenso wie beim brennen des Bootloaders direkt über avrdude (also nicht per IDE)

Ich lese daraus, es ist kein Atmega328PB.

Auf dem Chip auf der Platine steht folgendes:

Atmel
Mega 328PB-U
2025
2025TR8

Über die eingebundenen MiniCore Boards in der IDE lässt sich der µC nicht ansprechen bzw. beim brennen des Bootloaders kommt immer die Fehlermeldung

avrdude: Device signatur 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override

Daher die Fragen, warum die Meldung auf #9 immer auftaucht, wenn man den µC mit avrdude über CMD flaschen möchte

Bisher konnte ich mit dem Atmega328PB noch keine Erfahrungen sammeln, aber was in Post#8 steht, ist für mich eindeutig.
Evtl. ist der Chip ja ein Fake.

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: Expected signature for ATmega328PB is 1E 95 16
Double check chip, or use -F to override this check.

Du willst einen ATmega328PB programmieren, aber AVRdude sieht einen ATmega328P.
Das kann nichts werden!

Welchen Programmieradapter nutzt du?
Du siehst die Chip Signatur des Programmers.

@combie

Benutze zur Zeit den UNO mit Arduino as ISP Sketch, die Argutemte bzw. Befehle habe ich für avrdude entsprechend angepasst.

Kannst du einen Prog-Adapter empfehlen?

@HotSystems
Denke mal nicht, dass der Chip ein Fake ist der stammt von Reichelt.

@Doc_Arduino
Welche Bezeichnung steht auf deinen Chip?

Marvin97:
@HotSystems
Denke mal nicht, dass der Chip ein Fake ist der stammt von Reichelt.

Dann sollte der schon richtig sein.

Marvin97:
@HotSystems
Denke mal nicht, dass der Chip ein Fake ist der stammt von Reichelt.

Das muss nichts zu sagen haben. Wenn AVRdude eine andere Signatur empfängt, würde ich der eher glauben schenken, als irgendeinem Händler, der auch nur das verkaufen kann, was er geliefert bekommt.

Gruß Tommy

Arduino as ISP Sketch

Ist voll ok.

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: Expected signature for ATmega328PB is 1E 95 16
Double check chip, or use -F to override this check.

Und nochmal: Du siehst die Signatur des UNO!

Dafür müssen mehrere Sachen falsch laufen, damit das überhaupt passiert!
Unter anderem hast du den 10µF Kondensator falsch dran.
Und die AVRdude Parameter stimmen wohl auch nicht.

Hallo,

auf meinem steht natürlich ATmega328PB drauf mit entsprechender Signatur die du ja auch schon korrekt angezeigt bekommen hast. Jetzt hast du eine andere Signatur angezeigt bekommen. Wie die anderen User schon geschrieben haben. Irgendwas ging schief.

Eine brauchbare deutsche Anleitung scheint diese hier zu sein.

bzw.

Meine Fuse hatte ich wie folgt eingestellt. CFD enabled, BOD Level 4.3V, ext. Quarz, Boot Size 256, EESave
extended: 0xFC
high: 0xD6
Low: 0xFF
Bsp.: avrdude -c avrispmkII -p m328pb -v -P usb -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m

Bei der Bootzize bin ich mir allerdings bis heute nicht 100% sicher was mit Optiboot nun richtig ist. Vielleicht kann jemand dafür nochmal etwas Detaill bringen.

Hallo,

hab mir ein Refresh verpasst. Also der Bootloader ist kleiner 512Bytes groß. Bootsize Einstellung von 256 Words sind 512Bytes. Soweit okay. Was mich jedoch immer wieder stutzig macht ist, dass das optiboot.hex File 1.418 Bytes groß ist. Woher kommt dann die Bootloadergröße von <=512 Bytes?