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: ``` >>>: avrdude.exe -c arduino_as_isp -P COM3 -b 19200 -p m8 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
Johannes schrieb: > ATMEGA-16U Welchen Prozessor hast du auf deinem Board - U2 oder U4? > Lock-Bits und Fuses: \ > 0xFF \ > 0xE9 \ Es sollte drei Bytes geben: Low, High und Extended https://www.engbedded.com/fusecalc/
Programmieren tue ich mit dem Arduino UNO und dem ISP Sketch. Der Mikrocontroller ist der ATMEGA8 16U. Eine Zeile drunter steht: 2321A9H. https://www.reichelt.de/8-bit-atmega-avr-mikrocontroller-8-kb-16-mhz-pdip-28-atmega-8-16-dip-p45024.html?&nbc=1
:
Bearbeitet durch User
Johannes schrieb: > Nach dem Flashen wurde der Chip auch in AVRDUDESS nicht mehr erkannt: Kein Wunder, die Fuses deaktivieren die serielle Programmierung. Du brauchst einen HV-Programmer bzw. einen Fuse-Resetter.
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?
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.
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.
Johannes schrieb: > 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. Gut erkannt.
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"
S. L. schrieb: > Das ist seriell gar nicht möglich Aber per ISP Johannes schrieb: > mit dem Arduino Uno als ISP
> Aber per ISP
Und was, bitte, ist ISP, wenn nicht seriell?
Übrigens ließe es sich abschalten per RSTDISBL-Fuse, aber da das 'Fuse
High Byte' mit 'E9' programmiert wurde ...
S. L. schrieb: > Der uC wurde auf Quarz umgestellt: ich vermute, dass dieser nicht > richtig angeschlossen wurde. Sieht tatsächlich danach aus. Das Schreiben der hfuse schlug schon fehl.
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
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
:
Bearbeitet durch User
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: > 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.
:
Bearbeitet durch User
Okay, kannst du mir dann sagen wie ich das richtig mache? Oder einen Schaltplan schicken?\ Der Schwingkreis ist so aufgebaut wie der an der linken Seite: https://www.fischl.de/usbasp/bilder/usbasp_circuit.png Viele Grüße und danke für Eure Mühe
:
Bearbeitet durch User
Johannes schrieb: > Der Schwingkreis ist so aufgebaut wie der an der linken Seite: > https://www.fischl.de/usbasp/bilder/usbasp_circuit.png Zeig deinen! Besser wärs eh das mit einem externen Oszillator zu machen, nicht nur mit einem Resonator (Quarz).
Ein externer Clock an Pinb6 wird ihn ansprechbar machen, sollte die SPIEN wirklich nicht gelöscht sein.
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
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.
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
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
> Eventuell ... Nach der ursprünglichen Angabe (und auch dem Link) wurde E9 und FF programmiert. > Debug Wire aktiviert debugWIRE bei einem ATmega8?
Also bitte, Steve van de Grens, Zitate nicht verfälschen. Woher kommt eigentlich das Gerücht mit dem ATmega16 - in dem Link vom Anfang steht doch eindeutig "avrdude: device signature = 0x1e9307 (probably m8)"?
S. L. schrieb: > Woher kommt eigentlich das Gerücht mit dem ATmega16 Der wurde im Eröffnungsbeitrag genannt. Zumindest kann man den Schreibfehler so interpretieren. Aber egal, beide haben kein DebugWire.
:
Bearbeitet durch User
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
:
Bearbeitet durch User
Steve van de Grens schrieb: > 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, Nein! Der der genannte m16 hat keine RSTDISBL Fuse.
Arduino F. schrieb: > Der der genannte m16 hat keine RSTDISBL Fuse. Das auch nicht? Ich kenne mich mit diesen alten Modelle nicht aus. Hätte ich bloß nichts geschrieben ... schäm.
Arduino F. schrieb: > Der der genannte m16 hat keine RSTDISBL Fuse. Johannes schrieb: > Der Mikrocontroller ist der ATMEGA8 16U.
> Hätte ich bloß nichts geschrieben ... schäm.
Tja: "si tacuisses, philosophus mansisses" - aber machen Sie sich nichts
daraus: "Wer immer strebend sich bemüht, den können wir erlösen".
Alexander S. schrieb: > Johannes schrieb: >> Der Mikrocontroller ist der ATMEGA8 16U. Ja: Der m8 hat sie.
:
Bearbeitet durch User
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
Johannes schrieb: > und auf den Kondensatoren: 221. Ohne in die Liste gesehen zu haben: Das sind 220pF und nicht die gewünschten 22pF Johannes schrieb: > Auf dem Quarz: 8.000 Im Eingangsposting waren es noch 12MHz, jetzt 8?
:
Bearbeitet durch User
Alles klar. PS: 220 pF; so weit waren wir schon vor drei Tagen: > Der uC wurde auf Quarz umgestellt: ich vermute, dass > dieser nicht richtig angeschlossen wurde.
:
Bearbeitet durch User
Klappt jetzt :) Auch das Flashen ging problemlos. Es lag tatsächlich an den 220 pf statt 22 pF. Ist mir jetzt echt peinlich! Vielen Dank für eure Mühe und den tagelangen Support.
Johannes schrieb: > Ist mir jetzt echt peinlich! Das ist OK. Merksatz: > Der Weg in die Hölle, ist mit falschen Annahmen gepflastert.
> 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.
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.
:
Bearbeitet durch User
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.
"Geschimpfe, Geschrei"? - Das ist eine irrationale Projektion! Lassen wir es gut sein, die Sache ist ja schließlich erledigt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.