usbasp µC falsche LockBits Programiert

OP #7595514
Lesenswert?

Hallo liebe Community,

ich bin kompletter Anfänger und versuche gerade den USBASP nachzubauen. Hardware ist fetig, was aber Probleme macht ist das Programmieren des ATMEGA-16U. Diesen habe ich auf einem Breadboard (Quarz: 12 MHz)mit dem Arduino Uno als ISP versucht zu Programmieren. Der Chip wurde von AVRDUDESS problemlos erkannt. Also habe ich die USBASP Firmware im Anschluss ausgewählt und draufgespielt. Leider ist hier ein Fehler aufgetreten. Hier die Logs: https://pastebin.com/KHF29Rg6

Nach dem Flashen wurde der Chip auch in AVRDUDESS nicht mehr erkannt:

1
>>>: avrdude.exe -c arduino_as_isp -P COM3 -b 19200 -p m8 
2
ERROR: Unknown signature 000000

Auch habe ich versucht einen 8 MHz Quarz anzuschließen aber das funktioniert auch nicht.

Ich vermute es liegt an den falschen Lock-Bits und Fuses:
0xFF
0xE9
die ich beim flashen mit dem 12 MHz Quarz verwendet habe. Mich hat auch gewundert warum im Video (https://www.youtube.com/watch?v=hotZdN7vTVU) der µC mit einem 8 MHz Quarz programmiert wird aber dann am ende auf der USBASP Platine mit einem 12 MhZ Quarz laufen soll.

Was kann ich jetzt machen um das ganze zu retten und vor allem richtig zu programmieren? Ich habe keine high-voltage Programmierer etc.

Viele Grüße und Danke für eure Mühe

Johannes

OP #7595573
Lesenswert?

Mist. Sowas hab ich nicht und das klingt auch nach recht viel Aufwand bzw. Kosten. Da lohnt es sich für mich wahrscheinlich eher einfach nen neuen ATMEGA zu holen.

Welche Fuses müsste ich den setzen damit es beim nächsten Mal funktioniert? Und wie kann es sein, dass der Chip mit 8 MHz Quarz programmiert wird und dann später mit 12MHz läuft?

#7595608
Lesenswert?

Einen "Fusebit Doctor" bekommst du fertig für unter 20€ und er ist auch schnell selbst gebaut. Du bist nicht der Erste, der sich "verfused".

Der Quarz beim Programmieren gibt vor, wie schnell der Vorgang laufen darf. Im Anwendungsbetrieb gelten die Grenzen des Datenblattes, da bist du relativ frei.

#7595613
Lesenswert?

Johannes schrieb:

Mist. Sowas hab ich nicht und das klingt auch nach recht viel Aufwand bzw. Kosten. Da lohnt es sich für mich wahrscheinlich eher einfach nen neuen ATMEGA zu holen.

Welche Fuses müsste ich den setzen damit es beim nächsten Mal funktioniert? Und wie kann es sein, dass der Chip mit 8 MHz Quarz programmiert wird und dann später mit 12MHz läuft?

Es gibt Fuse Configurations Utilities, mit denen man die Einstellungen klar durch gehen kann. Auch Atmel (Microchip) Studio V7 zeigt die Einstellungen übersichtlich an und warnt auch vor Fehlern.

https://www.engbedded.com/fusecalc/ https://eleccelerator.com/fusecalc/fusecalc.php?chip=at86rf401 https://play.google.com/store/apps/details?id=me.chayan.avrfusecalculator&hl=en_CA&gl=US&pli=1

Wenn Du Deinen AVR retten willst, schau, ob Dir jemand im Forum mit einem STK500 helfen kann, den AVR wieder im HV Parallel Modus zurück zustellen. Vielleicht gibt es sogar jemand in der Nähe.

#7595633
Lesenswert?

Der uC wurde auf Quarz umgestellt: ich vermute, dass dieser nicht richtig angeschlossen wurde.

Denn:

Kein Wunder, die Fuses deaktivieren die serielle Programmierung.

Das ist seriell gar nicht möglich: "Notes: 1. The SPIEN Fuse is not accessible in Serial Programming mode"

#7595755
Lesenswert?

Johannes schrieb:

Ich vermute es liegt an den falschen Lock-Bits und Fuses:
0xFF
0xE9 \

1
avrdude.exe -c arduino_as_isp -p m8 ... -U lfuse:w:0xFF:m -U hfuse:w:0xE9:m

Damit schreibst Du aber nicht 0xFF in die Lock-Bits, sondern in die Low-Fuse (lfuse). Lock wäre "-U lock:w:0xFF:m".

Vorher kannst Du Deine Werte mit einem Fuse-Calculator kontrollieren, z.B.: https://www.engbedded.com/fusecalc/

Martin

OP #7595847
Lesenswert?

Also meinst du dass da nix gebricked ist sondern es Probleme mit dem Oszillator gibt? Der ist aber sicher richtig verdrahtet. Zwischen Pin 9 und 10 8 Mhz und von denen jeweils mit 22 pF auf GND.

Was genau soll ich denn deiner Meinung nach jetzt machen um es zum Laufen zu bekommen?

Viele Grüße Johannes

(Firma: Gast) #7595911
Lesenswert?

Johannes schrieb:

Was genau soll ich denn deiner Meinung nach jetzt machen um es zum Laufen zu bekommen?

Da du über ISP nicht die SPIEN Fuse setzen kannst, kann nur der Oszillator "kaputt" sein

Darum: Johannes schrieb im Beitrag #7595847:

Der ist aber sicher richtig verdrahtet.

glaube ich dir das nicht wirklich.

Johannes schrieb:

Mich hat auch gewundert warum im Video (https://www.youtube.com/watch?v=hotZdN7vTVU)

Da wundert mich noch mehr! Nur 2 der 4 Powerpins beschaltet. Keine Abblockkondensatoren.

Wenn du das auch so gemacht hast......

Übrigens: Warum sollte man einen USBasp nachbauen, wenn man doch einen "Arduino as ISP" schon da hat.

#7596044
Lesenswert?

H. H. schrieb:

Zeig deinen!

Besser wärs eh das mit einem externen Oszillator zu machen, nicht nur mit einem Resonator (Quarz).

Bitte mal mit dem Scope (Tastkopf 1:10) an Pin XTAL2 messen, ob da ein Signal kommt. Ansonsten Quartz und beide Kondensatoren raus und einen stabilen externen Takt von z.B. 8 MHz an XTAL1 einspeisen, XTAL2 bleibt unbeschaltet. Wenn sich dann der Prozessor meldet, kannst Du die Fuses wie auf der USBASP-Seite beschrieben setzen:

1
You have to change the fuse bits for external crystal (see "make fuses").
2
# TARGET=atmega8    HFUSE=0xc9  LFUSE=0xef

Arduino F. schrieb:

Übrigens: Warum sollte man einen USBasp nachbauen, wenn man doch einen "Arduino as ISP" schon da hat.

Oder wenn es kompakter sein soll, dann einen Nano als Programmer umbauen (nur eine Leitung kappen und eine nachfädeln): https://github.com/Ho-Ro/nanoSTK_V1

Vorteil: kein USB-Problem mit der nicht norm-konformen VUSB-Implementierung (die gerade bei Windows Zicken machen kann), definierte serielle USB-Kommunikation über STK500(v1) Protokoll.

Martin

#7596226
Lesenswert?

an Johannes:

Wie kommt man eigentlich auf die Idee, das 'Fuse High Byte' mit 'E9' zu programmieren?

Zwischen Pin 9 und 10 8 Mhz und von denen jeweils mit 22 pF auf GND.

Was steht genau auf dem Quarz, und was auf den beiden Kondensatoren? Ich frage, weil hier schon manchmal pico und nano verwechselt wurde.

#7596241
Lesenswert?

Johannes schrieb:

ich bin kompletter Anfänger und versuche gerade den USBASP nachzubauen. Hardware ist fetig, was aber Probleme macht ist das Programmieren des ATMEGA-16U. Diesen habe ich auf einem Breadboard (Quarz: 12 MHz)mit dem Arduino Uno als ISP versucht zu Programmieren. Der Chip wurde von AVRDUDESS problemlos erkannt. Also habe ich die USBASP Firmware im Anschluss ausgewählt und draufgespielt.

Kann es sein, dass Du versucht hast, einen ATmega16 mit der Firmware für einen ATmega8 (und den Einstellungen der Fuses für einen ATmega8) zu flashen?

Zwischen ATmega8 und ATmega16 gibt es nicht nur Unterschiede bzgl. der Speichergröße der Chips.

Wenn es also unbedingt ein USBasp sein soll, warum kaufst du dir dann keinen fertigen aus China (findest du für ca. 4 Euro auf Ebay).

Wenn du einen USBasp zwingend selbst bauen magst, solltest du tunlichst die auf https://www.fischl.de/usbasp/ vorgeschlagenen Controller verwenden.

Wenn es "nur" darum geht, einen Programmer zu haben, hättest du auch deinen Arduino-Uno einfach mit dem ISP-Script weiter verwenden können, evtl. auch mit einem UNO-Isp-Shield:

https://www.ebay.de/itm/265740835099?hash=item3ddf63591b:g:RkQAAOSwixdirDyT&amdata=enc%3AAQAIAAAAwNDROD7ckcEP3ggnLzW36zxqUgsO1JPkJNZnbwJh71ceoRT0SxxPrbfsTysIdiXcv06RTZEakGRt55SVCt50CtYzVDRtoIarbrKNT5NpZywfij0hBMJtRj8P%2BIXeQcdY2UA89QDC9RqYedOgD3u%2BTIbrIvhLmjArDnO4Zz7BKqoYv7oyvMIbQt8%2FFtsptilnCz8kXd2F5h07apAeXu1kh77rI6%2FlS%2BLnMgxR0CCvt%2BKUQTXiPOqa3oRef5imqgXpPA%3D%3D%7Ctkp%3ABk9SR5LJx5avYw

Bezüglich deines - wohl verfusten Controllers - gibt es eine Bauanleitung seit geraumer Zeit im Netz um das rückgängig zu machen:

https://github.com/SukkoPera/avr-fusebit-doctor

Gast #7596437
Lesenswert?

Arduino F. schrieb:

Da du über ISP nicht die SPIEN Fuse setzen kannst, kann nur der Oszillator "kaputt" sein

Ist nicht ganz richtig. Eventuell hat er sich den Reset Pin disabled, oder den Debug Wire aktiviert, dann ist SPI auch nicht mehr nutzbar. Oder er hat den Chip für eine andere externe Taktquelle konfiguriert, so dass der Quarz nicht Schwingt. In dem Fall kann man noch was retten.

Dieser Aufsatz hilft eventuell, das Problem zu verstehen und Lösungen zu versuchen: http://stefanfrings.de/avr_verfused

#7596482
Lesenswert?

Nun ja, das bezog sich weniger auf Ihr debugWIRE als auf

Welchen Prozessor hast du auf deinem Board - U2 oder U4?

bzw.

Kann es sein, dass Du versucht hast, einen ATmega16 ...

PS: ... von /rawi/ bzw. /jjflash/, sollte ich vielleicht korrekterweise noch ergänzen

OP #7597744
Lesenswert?

Vielen Dank für eure Beitrage und die Diskussionen :)

Martin H. schrieb:

Bitte mal mit dem Scope (Tastkopf 1:10) an Pin XTAL2 messen, ob da ein Signal kommt. Ansonsten Quartz und beide Kondensatoren raus und einen stabilen externen Takt von z.B. 8 MHz an XTAL1 einspeisen

Hab ich gemacht. Es liegen komischerweise nur ca. 500 Hz an XTAL 2 (siehe Anhang). Vielleicht erklärt dass das Problem. Ich probiere es heute Abend mal mit den vorgeschlagenen 1 MHz.

S. L. schrieb:

Was steht genau auf dem Quarz, und was auf den beiden Kondensatoren? Ich frage, weil hier schon manchmal pico und nano verwechselt wurde.

Auf dem Quarz: 8.000 und auf den Kondensatoren: 221.

Danke auch für die Inspiration mit den Alternativen zum usbasp. Ich wollte das halt mal selber probieren damit ich "meinen eigenen" haben.

Viele Grüße Johannes

Angehängte Dateien:
(Firma: Funkenflug Industries) #7598418
Lesenswert?

Es lag tatsächlich an den 220 pf statt 22 pF.

Danke Dir für die Rückmeldung!

Sowas ist nicht schlimm und ist uns allen hier schon passiert. Ich bin sogar der Meinung, daß ich mir bei meinen Anfängen einen älteren AVR wirklich durch's Abschalten der SPIEN-Fuse via SPI gebrickt habe. Kann ein AT90S2313 gewesen sein, das waren die ersten AVRs, die ich in der Hand hatte. SPIEN? Was is'n das? Brauch ich nicht - aus damit und schwupps konnte mich der µC nicht mehr leiden.

Ist mir jetzt echt peinlich!

Das muss es nicht. Wer fragt, ist einmal der Dumme. Wer nicht fragt, bleibt sein ganzes Leben lang dumm.

#7598512
Lesenswert?

an Johannes:

Das Problem lag, genau betrachtet, nicht bei Ihnen als Anfänger, sondern vielmehr bei einigen der alten Hasen hier, die nicht richtig hinschauten.

PS: So, wie man eine Nadel am besten in einem Heuhaufen versteckt, lässt sich auch die Lösung eines Problems in einer Flut von irreführenden Beiträgen verstecken - wie soll da ein Anfänger durchsteigen.

(Firma: Gast) #7598588
Lesenswert?

S. L. schrieb:

Das Problem lag, genau betrachtet, nicht bei Ihnen als Anfänger,

Das ist eine irrationale Projektion!

Denn: Es kam mehrfach der Hinweis auf den Oszillator! Worauf der TO sagte: Der Schaltungsteil ist OK!

Spätestens mit den 221 war klar, dass da ein Irrtum/Fehlannahme des TO vorliegt.

Sicherlich gab es auch ein paar (unbeabsichtigte?) Nebelkerzen! z.B.

  1. m16 vs. m8
  2. Lockbits/Fuses
  3. 8MHz vs. 12MHz

Also bitte nicht auf die Helfer schimpfen, sondern anerkennen, dass das Problem identifiziert wurde, trotz der ganzen (unabsichtlichen?) Verwirrspielchen.

Kein Geschimpfe, kein Geschrei.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren