ATmega328P-AU Fuses zerschossen? Wie wiederherstellen?

Hallo!

Ich verwende für ein Selbstbauprojet einen ATmega328P in SMD-Ausführung. Die Programmierung erfolgt on board über eine ICSP-Schnittstelle und USBtinyISP-Adapter aus der Arduino IDE heraus. Den Vorgang hatte ich bei anderen Boards bislang etliche male erfolgreich durchführen können. Bei meinem letzten baugleichen Board hatte ich in der Hitze des Gefechts gleich meinen Sketch hochgeladen ohne erstmalig den Bootloader zu installieren. Das Hochladen hat auch einwandfrei funktioniert, nur kann ich anschließend nicht mehr aus der IDE heraus auf den Prozessor zugreifen. Ich vermute, daß ich aufgrund des fehlenden Bootladers mir einige wesentliche Fuses zerschossen habe, die ich für den Datenaustausch benötige.

averdude liefert folgende Fehlermeldung, hier beim Versuch den Bootlader hochzuladen. Das Hochladen von Programmen liefert das gleiche Ergebnis:

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.

Wie gesagt, hier liegt kein Bedienfehler bei der Nutzung der IDE oder des Programmieradapters vor, ich hatte das bereits mehrmals gemacht, allerdings mit vorher installiertem Bootloader, außerdem wurde der 1. Sketch ja auch fehlerfrei hochgeladen, nur jetzt geht halt nichts mehr.

Bevor ich den Prozessor auslöte (was ich nur ungern machen würde) und einen jungfräulichen einlöte, gibt es eine Möglichkeit den bereits installierten Prozessor wieder zu retten. Und wenn ja welche?

Grüße Thomas

Das funktioniert dann über einen atmega hv programmer.
Allerdings vermute ich da tatsächlich ein anderes Problem.
Ich habe schon mehrfach die ATmega328P-AU ohne vorherigen Bootloader geflasht.
Das war kein echtes Problem, den Bootloader konnte ich anschließend direkt draufpacken und erneut mit dem Programm flashen.

Kannst du dich mit avrdude + usbasp zum atmega verbinden?
avrdude -c usbasp -p m328p -P usb -t
Wenn ja, dann kansst du auch fie Fuses passend setzen.

Der Prozessor ist sauber eingelötet, da sind keine Brücken. Auch die Platine ist in Ordnung. Ich hatte drei baugleiche vorher ohne Probleme nutzen können.

Was mich etwas irritiert:
das erste Hochladen des Sketches hat ohne Fehlermeldung geklappt. Erneutes Hochladen ging nicht mehr.

Ich prüfe nun erst mal meine Platine, ob die auch genauso bestückt ist wie die vorausgehenden. Bevor ich mir einen HV-Programmer zulege, mit dem es dann möglicherweise auch nicht funktioniertt, werde ich das Teil wohl auslöten und es mit einem anderen ausprobiere.

Aber erst mal die Platine prüfen.

Grüße Thomas

Kannst du denn feststellen, ob das Programm auf dem ATmega läuft ?
Evtl. ist ja im Sketch irgendwas, was den ATmega blockiert.

HV programmieren geht auch mit z.B. einem Uno und ein paar Bauteilen.

Beispiel

Ich habe das Board nochmal kontrolliert und auch mit einem zweiten baugleichen Board verglichen. Ich sehe da keinen Unterschied.

Bei baugleichen Board kann ich den Bootlader problemlos übertragen. Beim letzten nicht.
Dann habe ich jetzt doch noch Prozessor gewechselt. Und auch geschaut, daß das der richtige ist. Atmega328P-AU. Auch nach dem Austausch funktioniert das nicht.

Ich bekomme ständig diese Meldung:

Arduino: 1.8.15 (Windows 10), Board: "Arduino Uno"

C:\Users\Dell\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/bin/avrdude -CC:\Users\Dell\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf -v -patmega328p -cusbtiny -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDE:m -Ulfuse:w:0xFF:m 

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\Dell\AppData\Local\Arduino15\packages\arduino\tools\avrdude\6.3.0-arduino17/etc/avrdude.conf"



         Using Port                    : usb
         Using Programmer              : usbtiny

avrdude: usbdev_open(): Found USBtinyISP, bus:device: bus-0:\\.\libusb0-0001--0x1781-0x0c9f

         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 : USBtiny
         Description     : USBtiny simple USB programmer, https://learn.adafruit.com/usbtinyisp
avrdude: programmer operation not supported

avrdude: Using SCK period of 10 usec
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.

Die Pins am Prozessor habe ich auch nochmal kontrolliert. Auch die Leitungen zur ICSP-Schnittstelle.

Ich bin ratlos.

Im Programm sind sicherlich keine Fehler drin. Ich nutze ja den gleichen Sketch auch bei meinen anderen baugleichen Platinen. Dort geht das.
Bei dem jetzt neu eingelöteten Prozessor ist zudem gar kein Programm drauf. Hier habe ich nur versucht den Bootlader hochzuladen.

Grüße Thomas

Meine Frage in Post #5 hast du leider nicht beantwortet.
Aber ich tippe mal, die Chips sind Fake. Gab es schon öfter.

Beim normalen upload per Programmer werden die Fuses nicht geändert.
Da kann nichts passiert sein.
Das ist also eine Nebelkerze.

Kannst du Taktfrequenz an deinem Programmer oder AVRdude runter setzen?
Denn neue at328 werden mit 1MHz ausgeliefert.Das ist ein bisschen lahm für manche Programmer default einstellungen.

Lassen die funktionstüchtigen Boards sich immer noch flashen?

Entschuldigung. Hatte ich übersehen.

Nein, wird kein Fake sein. Gekauft bei Reichelt und auch schon erfolgreich eingesetzt. Stammt von derselben Rolle.

Ja. Es muß mit dem Board oder dem darauf befindlichen Prozessor zusammenhängen. Ich kann aber keinen Fehler finden. Die Beinchen sind alle mit den Leiterbahnen verlötet und gegeneinander ohne Bücken.

MISO, MOSI, SCK kommen auch am Prozessor an. Spannung und Ground ist auch da.
Wie gesagt, ich habe schon drei Platinen gefertigt, die funktionieren. Gleiche Platinen, gleiche Bauteile.

Vielleicht habe ich auch dem Prozessor beim Einlöten zuviel zugemutet. Dann aber zweimal hintereinander. Obwohl die Teile erstaunlich viel aushalten.

Ich denke, daß ich die Platine als Ausschuß markiere und eine neue bestücke. Dann wird aber sofort der Prozessor getestet sobald der drauf ist. So hatte ich das auch bei den anderen gemacht.

Ich weiß nicht wo ich noch suchen soll. Am Prozessor gibt es auch nicht allzuviel. Vier Kerkos und ein Quarz. den Quarz hatte ich auch schon gewechselt. Die Kerkos geprüft.

OK, Ausschuß. Schade um die Arbeit.

Und was hindert dich an dem Test?

Und die Kerkos am Quarz haben die richtigen Werte, ca. 22pF bei 16 MHz ?
Zeig doch mal die Schaltung.

Man man man...
Der Quarz oder seine Kerkos können nicht das Problem sein!
Das entspricht nicht der Fehlerbeschreibung

Und Reset ?

Achso....na dann.

Ja!
Interner Takt bei Auslieferung.
Quarz erst nach Fuses Änderung(Bootloader brennen).

Ja, das will ich gern glauben.
Ich habe aber auch schon das Problem gehabt, dass ich die ohne Quarz nicht flashen konnte.
Mag sein das das Serien abhängig ist, aber deswegen hier die Frage.

Ich habe aber auch schon das Problem gehabt,
dass ich die ohne Quarz nicht flashen konnte.

Wenn die Fuses auf Quarz eingestellt sind muss auch ein Quarz dran sein.
Das ist Fakt!

Die Fehlerbeschreibung war:

Was mich etwas irritiert:
das erste Hochladen des Sketches hat ohne Fehlermeldung geklappt. Erneutes Hochladen ging nicht mehr.