Go Down

Topic: Bootloader für Atmega328pb (Read 1 time) previous topic - next topic

Medolino73

Ja also hab hier 2 chips liegen, den atmega 328p und den 328pb, den 328p kann ich ohne probleme flashen, also bootloader und sketch funktionieren einwandfrei, aber das pb model will nicht

Code: [Select]
avrdude: Version 6.3-20190619
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Users\Medi Muriqi\Documents\Arduino\hardware\MiniCore-master\avr/avrdude.conf"

         Using Port                    : usb
         Using Programmer              : usbasp
         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  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    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 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
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00

         Programmer Type : usbasp
         Description     : USBasp, http://www.fischl.de/usbasp/

avrdude: auto set sck period (because given equals null)
avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Fehler beim Brennen des Bootloaders.



harryberlin

wenn man die signatur vom 328p auf die vom pb in der avrdude config ändert, kann man auch den ide nano bootloader auf den pb flashen.
sozusagen ein kleiner workaround.

Medolino73

ich glaub ich bleib beim 328p, das macht keine Probleme, obwohl der 328pb interessant ist

wno158

Jetzt hast Du Dich schon so weit vorgekämpft und sogar einen Programmer angeschafft...

Ich nutze Atmel Studio 7 und ebenfalls einen Programmer (aber anderes Modell, Amazon bzw. Reichelt) zum Brennen von Bootloadern.

Wäre vielleicht noch einen letzten Versuch wert...
Gruß Walter

harryberlin


Doc_Arduino

#65
May 24, 2020, 02:02 pm Last Edit: May 24, 2020, 02:05 pm by Doc_Arduino
Hallo,

ich blick leider nicht durch was nun mit dem 328PB funktioniert und was nicht, weil Zwischendurch immer mal wieder "funktioniert" auftaucht.
Mein avrdude Ordner hängt dran, damit funktioniert auf jeden Fall der ATmega328PB, weil in der .conf enthalten.
Ich habe einen orignalen AVRISPmkII. Mit dem Zadig Tool 2.5 habe ich den Treiber auf "libusb-win32 (v1.2.6.9)" umgestellt,   https://zadig.akeo.ie/       mit Adminrechten, dann > Option > List all Devices

Wenn dein Programmer per COM Port angesprochen wird, dann musste den COM Port mit der -P Option angeben.
-P com3    (3 steht stellvertretend für die Comport Nummer)

In der Eingabeaufforderung mein Test mit
> avrdude -c avrispmkII -p m328pb -v
oder
> avrdude -c avrispmkII -p m328pb -P usb -v
bringt mir:
Quote
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:\avrToolchain\avrdude\avrdude.conf"

         Using Port                    : usb
         Using Programmer              : avrispmkII
avrdude: usbdev_open(): Found AVRISP mkII, serno: 000200215972
         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  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    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 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 : STK500V2
         Description     : Atmel AVR ISP mkII
         Programmer Model: AVRISP mkII
         Hardware Version: 1
         Firmware Version Master : 1.24
         Vtarget         : 5.0 V
         SCK period      : 8.00 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e9516 (probably m328pb)
avrdude: safemode: hfuse reads as D1
avrdude: safemode: efuse reads as FC

avrdude: safemode: hfuse reads as D1
avrdude: safemode: efuse reads as FC
avrdude: safemode: Fuses OK (E:FC, H:D1, L:FF)
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Medolino73

wo bekommt man den Originalen AVRISPmkII noch, hab nix gefunden, bis auf jede menge China Clones, was funktioniert ist der 328p, jedoch nicht der 328pb, bei mir erscheint kein com port, nur usb


Doc_Arduino

#67
May 24, 2020, 07:39 pm Last Edit: May 24, 2020, 07:46 pm by Doc_Arduino
Hallo,

den gibts schon seit Jahren nicht mehr. Das war auch nur ein Hinweis darauf das du nicht meine avrdude Optionen für meinen Programmer verwendest, sondern den für deinen Programmer. Mehr nicht. Da du schon flashen konntest, musst du ja wissen welche Option bei dir funktioniert. Ich möchte nur wissen ob der einfache Test den ATmega328PB anzusprechen funktioniert. Sonst brauchst du nicht weitermachen.
Die Ausgabe muss dann wie bei mir aussehen. Und verwende meine avrdude.conf, sonst kennt avrdude den ATmega328PB nicht.
Am Besten entpackste das .zip in dein Userverzeichnis, dann sind die Pfade kurz für die Orgie.
Also C:\Users\Medolino\avrdude\....
Dann gehste in die Windows Eingabeaufforderung (Windowstaste + R > cmd) und wechselst in den Ordner 'avrdude'
und gibts angepasst für deinen Programmer und deinen COM Port
Bsp.1:  avrdude -c avrispmkII -p m328pb -v -P usb
Bsp.2:  avrdude -c avrispmkII -p m328pb -v -P com9
ein. Also -c und -P änderst du für dich ab. Was du hier vorgeben musst weiß nicht, kann ich dir nicht sagen, solltest du jedoch schon wissen. Wenn du keinen COMport hast sondern USB, dann eben -P usb. Den Programmernamen musste aber anpassen. Was da auch immer zu was kompatibel ist.

Falls das klappt flashste die passende Bootloaderdatei. Da bin ich ehrlich gesagt überfragt was die Baudratenauswahl zu sagen hat. 115200 sind eigentlich normal dafür. Zumindestens nutzt das die IDE für andere Boards. Danach beschaltest du den ATmega328PB wie MCUdude das hier zeigt
https://camo.githubusercontent.com/e055c491624c76b3c2fceacb9a6105c1918ba163/68747470733a2f2f692e696d6775722e636f6d2f4c72456f6b4f392e706e67
und konfigurierst in der IDE das 328PB Menü vorm Blinksketch übertragen.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Doc_Arduino

#68
May 24, 2020, 08:18 pm Last Edit: May 25, 2020, 11:22 pm by Doc_Arduino
Hallo,

was ich noch testen konnte.

Bootloader flashen, habe mir mal die 16MHz Version mit Baudrate 115200 für USART0 rausgesucht. Mein 328PB hat einen 16MHz Quarz.
aus dem Verzeichnis
C:\Users\Doc\AppData\Local\Arduino15\packages\MiniCore\hardware\avr\2.0.5\bootloaders\optiboot_flash\bootloaders\atmega328pb\16000000L

die Datei: optiboot_flash_atmega328pb_UART0_115200_16000000L_B5.hex nach
C:\Users\Doc\avrdude\
kopiert und eingekürzt auf optiboot328pb.hex
dann geflasht mit:
avrdude -c avrispmkII -p m328pb -v -P usb -e -U flash:w:"C:\avrToolchain\avrdude\optiboot328pb.hex":i

Mehr kann ich nicht testen, da ich keinen USB-Serial Wandler mit herausgeführten DTR Signal habe. Ab hier müßtest du wie im obigen Link den 328PB anders beschalten und solltest aus der IDE heraus Sketche programmieren können. Den ISP Programmer kannste dran lassen. Wird aber ab hier nicht benötigt. Wichtig ist die serielle Beschaltung inkl. Reset Pullup, 100nF und gekreuzte Tx/Rx. Eben so wie im Link.

Nochwas. Falls du soweit kommst den Bootloader zu flashen aber danach scheiterst, dann wäre es nur ein halber Beinbruch. Du kannst die fertig kompilierten Sketche auch ohne Bootloader direkt flashen. Ist nur etwas umständlicher immer die .hex Files rauszufischen. Also statt Bootloader flasht du die Programmfiles. Die avrdude Option -e lässte aber dann weg. Musst aber die Fuses einmalig richtig einstellen. Sonst taktet ein jungfräulicher ATmega in der Regel mit 1MHz ohne Quarz.

Nochwas. Vielleicht lags/liegst auch daran. Nach jeden Flashvorgang den Controller reseten.  ;)
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Medolino73

werd ich ausprobieren, vielen dank für die ausführliche erklärung

Doc_Arduino

#70
May 25, 2020, 11:13 pm Last Edit: May 25, 2020, 11:22 pm by Doc_Arduino
Hallo,

habe heute meinen USB-Serial Wandler mit FTDI FT232RL modifiziert und das DTR Signal herausgeführt und den ganzen Spass durchexerziert.
Aber der Reihe nach.
Wenn man den Bootloader mittels separaten ISP Programmer flasht, muss man sich auch selbst um die Fuse Einstellungen kümmern.
> avrdude -c avrispmkII -p m328pb -v -P usb -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m
Das gilt für den üblichen 16MHz externen Quarz.

Man muss beim ATmega328PB übrigens keine Angst vorm Takteinstellung verfusen haben. Solange man das Fusebit 'CFD' in Ruhe lässt. Der schaltet automatisch in den Notbetrieb wenn er keinen Takt erkennt. Man benötigt keinen externen Hilfstakt für Rettungsmaßnahmen. Das am Rande.

Flasht man den Bootloader irgendwie über die Arduino IDE Bootloader Option sollten die Fuses automatisch richtig eingestellt werden.

Egal wie, sind die Fuse gesetzt flasht man den passenden Bootloader. Meine alte Vermutung war richtig.
Die optiboot Datei für 16Mhz, Baudrate 115200 und USART0 passt.
> avrdude -c avrispmkII -p m328pb -v -P usb -U flash:w:"C:\avrToolchain\avrdude\optiboot_UART0_115200_16MHz.hex":i -e

Ab hier kann man den ISP Programmer abklemmen.

Jetzt klemmt man einen passenden USB-Serial Wandler mit verfügbaren DTR Signal an. Ohne DTR Signal gehts nicht. Das heißt die einfachen Kabel mit Prolific Chip u.ä. sind dafür nicht ausreichend.


Jetzt stellt man in der IDE noch alle Einstellung richtig und kann uploaden.


Das wars. Meine Testblinkled mit Arduino Pinnummer 8 steckt an Controllerpin 'PB0'.
Der µC resetet automatisch nach Upload.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Medolino73

Ich hatte glück die tage, hab tatsächlich noch ein Originales Avrisp mk2  durch zufall bei einem kollegen bekommen der sich das teil vor Jahren zugelegt hat um auch mit dem Progen zu starten, ist aber nie dazu gekommen, werd die Tage mal das ganze in angriff nehmen. besten Dank für die Hilfestellung

Doc_Arduino

Hallo,

dann haste echt Glück, hoffentlich möchte dein Kollege den nicht zurück.  :)
Dann kann mit dem ATmega328PB nichts mehr schief gehen.
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

Medolino73

ne den bekommt er nicht mehr  :D , hat ja en fufi bekommen

Medolino73

#74
May 31, 2020, 12:40 am Last Edit: May 31, 2020, 01:13 am by Medolino73
Also, hab das ganze genau nach Anleitung gemacht, aber die PB will er immer noch nicht, die P Version jedoch ohne probleme

PB Version
Code: [Select]
C:\Users\Medi Muriqi>avrdude -c avrispmkII -p m328pb -v -P usb

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:\AVRDUDE\avrdude.conf"

         Using Port                    : usb
         Using Programmer              : avrispmkII
avrdude: usbdev_open(): Found AVRISP mkII, serno: 0000B0047920
         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  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    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 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 : STK500V2
         Description     : Atmel AVR ISP mkII
         Programmer Model: AVRISP mkII
         Hardware Version: 1
         Firmware Version Master : 1.24
         Vtarget         : 5.0 V
         SCK period      : 8.00 us

avrdude: stk500v2_command(): command failed
avrdude: stk500v2_program_enable(): bad AVRISPmkII connection status: Unknown status 0x00
avrdude: initialization failed, rc=-1
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.


und die P Version
Code: [Select]
C:\Users\Medi Muriqi>avrdude -c avrispmkII -p m328p -v -P usb

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:\AVRDUDE\avrdude.conf"

         Using Port                    : usb
         Using Programmer              : avrispmkII
avrdude: usbdev_open(): Found AVRISP mkII, serno: 0000B0047920
         AVR Part                      : ATmega328P
         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  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    0      0  4500  4500 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  4500  4500 0x00 0x00
           lock           0     0     0    0 no          1    0      0  4500  4500 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 : STK500V2
         Description     : Atmel AVR ISP mkII
         Programmer Model: AVRISP mkII
         Hardware Version: 1
         Firmware Version Master : 1.24
         Vtarget         : 5.0 V
         SCK period      : 8.00 us

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.02s

avrdude: Device signature = 0x1e950f (probably m328p)
avrdude: safemode: hfuse reads as D6
avrdude: safemode: efuse reads as FD

avrdude: safemode: hfuse reads as D6
avrdude: safemode: efuse reads as FD
avrdude: safemode: Fuses OK (E:FD, H:D6, L:F7)

avrdude done.  Thank you.



EDIT: auch der PB funktioniert, hab scheinbar einen Defekten erwischt, bei einem anderen funktioniert es wie es soll, Vielen Dank nochmals

Go Up