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:
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.
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.
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.
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.
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.
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?
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").
Ü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.
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:
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.
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)"?
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.
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.
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.
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.
m16 vs. m8
Lockbits/Fuses
8MHz vs. 12MHz
Also bitte nicht auf die Helfer schimpfen, sondern anerkennen, dass das Problem identifiziert wurde, trotz der ganzen (unabsichtlichen?) Verwirrspielchen.