Moin, ich habe noch nie mit den FuseBits gearbeitet, bin aber derzeit an der Programmierung zum Auslesen des MD-Bus. Da ich hierzu einen MDB-Master benötige und ich das Rad natürlich nicht neu erfinden wollte, bin ich über folgendes Github-Prjekt gestolpert: https://github.com/perdidor/Arduino-MDB-UART/tree/master Also schnell einen 644er bestellt und mittels der Website: https://www.engbedded.com/fusecalc/ den Aufruf für avrdude gebaut und natürlich schnell ENTER gedrückt. Aufruf: avrdude -p m644 -P com11 -c usbasp -b 19200 -U lfuse:w:0xf7:m -U hfuse:w:0xd6:m -U efuse:w:0xf9:m so das wars dann auch schon mit der Kommunikation mit dem Atmega... Als Ausgabe kam OK und das gewohnte "avrdude done. Thank you." Kann mir jemand sagen was ich falsch gemacht habe und warum ich jetzt keine Verbindung mehr bekomme? Habe auch schon einen 16000er Takt angelegt, dennoch keine Kommunikation mehr möglich: avrdude: auto set sck period (because given equals null) avrdude: warning: cannot set sck period. please check for usbasp firmware update. 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. Ein STK ist leider nicht vorhanden, wäre schade ich müsste den Atmega entsorgen. Gruß und einen schönen Sonntag
David schrieb: > Ein STK ist leider nicht vorhanden, Ein beliebiger AVR Arduino und ScratchMonkey könnte den Chip vorm verschrottet werden bewahren. David schrieb: > Kann mir jemand sagen was ich falsch gemacht habe und warum ich jetzt > keine Verbindung mehr bekomme? Offensichtlich irgendwas mit dem Takt.
:
Bearbeitet durch User
Arduino UNO sind sogar zwei vorhanden. Gibt es zu deiner Antwort auch irgendwo eine Anleitung, oder kannst du mir noch ein paar Stichpunkte mitgeben? HV-Programmierung traue ich mir jetzt nicht zu, die MISO/MOSI Verbindung scheint ja nicht mehr möglich zu sein.
David schrieb: > Gibt es zu deiner Antwort auch irgendwo eine Anleitung, oder kannst du > mir noch ein paar Stichpunkte mitgeben? Dein Google scheint ja total kaputt zu sein..... Anleitung: https://microtherion.github.io/ScratchMonkey/index.html Code: https://github.com/microtherion/ScratchMonkey
Du hast einen externen Full-Swing-Oszillator konfiguriert. Dann musst du auch einen anschließen. Sonst gibts keinen Takt.
MaWin O. schrieb: > Dann musst du > auch einen anschließen. Oder auch den UNO als Takt Generator nutzen.
MaWin O. schrieb: > Full-Swing-Oszillator Hatte ich mit entsprechnender Hardware wie in Arduino-MDB-UART/PCB/parts_list.txt aus dem Github-projekt aufgeführt umgesetzt. Ab hier sollte die Verbindung über MISO/MOSI doch theoretisch wieder gehen oder?
:
Bearbeitet durch User
David schrieb: > Ab hier sollte die Verbindung über MISO/MOSI doch theoretisch wieder > gehen oder? Wie schnell ist der? Hast du einen zu schnellen Programmer-Takt? Bei langsamem Oszillator darf man nicht den vollen Programmer-Takt fahren.
Takt Steht auf 9600baud und der Quartz hat 16.000MHz. EDIT: Mit dem Schalter -F beim avrdude bekomme ich jetzt folgende Meldung: avrdude: auto set sck period (because given equals null) avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: error: program enable: target doesn't answer. 1 avrdude: initialization failed, rc=-1 avrdude: AVR device initialized and ready to accept instructions avrdude: Device signature = 0x2e6176 avrdude: Expected signature for ATmega644 is 1E 96 09 (Habe zwischenzeitlich den Quartz auf dem Steckboard direkt ohne Jumperkabel mit dem AVR verbunden) irgendwas scheint mit dem Takt noch nicht zu stimmen, er wirft mir bei "avrdude: Device signature" immer eine andere aus.
:
Bearbeitet durch User
David schrieb: > und der Quartz hat 16.000MHz. Du hast die Fuses nicht für einen Quarz/Crystal/Resonator konfiguriert, sondern für einen Oszillator, wie mir scheint. Und ja: Das macht einen/den Unterschied David schrieb: > Mit dem Schalter -F beim avrdude Der kann nur AVRs retten, bei denen die Signatur kaputt ist. Gegen eine Fuses Fehlkonfiguration hilft der nicht. (meist macht der Schalter mehr Probleme als er nutzt) Tipp: Dein Programmer hat einen "slow clock" Jumper.
:
Bearbeitet durch User
Ok, Danke! Ich sehe gerade MaWin O. hatte das auch schon geschrieben... Jetzt frage ich mich aber schon etwas, in dem Github-Projekt ist in "parts_list.txt" extra der Quartz mit 16.000 aufgeführt und auch bei den PCB's sehe ich immer einen Quartz... Und in dem Screenshot der Readme sind die Fuses für den 644 auch so ausgewählt. Was ist denn nun bei meinen Fuses falsch gelaufen? Habe doch die gleichen "lfuse:w:0xf7:m -U hfuse:w:0xd6:m -U efuse:w:0xf9:m" wie beschrieben gesetzt!? Kann das jetzt irgendwie nicht nachvollziehen. Wäre klasse jemand könnte mir hier noch eine kleine Erklärung geben und ggf aufzeigen wie es sein sollte mit einem externen Quartz. (Oszillator hab ich bestellt, teste ich morgen.)
David schrieb: > Wäre klasse jemand könnte mir hier noch eine kleine Erklärung geben und > ggf aufzeigen wie es sein sollte mit einem externen Quartz. Ja dann muss man halt Quartz statt Resonator einstellen. Die Werte stehen im Datenblatt. Dann ist deine Github-Quelle wohl falsch. Soll vorkommen.
Fuse Low byte 0xF7: u.a. 'Full swing Crystal Oscillator': ist dieser 16 MHz-Quarz korrekt angeschlossen, incl. der Kondensatoren? Fuse High byte 0xD6: u.a. Bootloader, spielt hier aber keine Rolle Extended Fuse byte 0xF9: 'BODLEVEL' - da lese ich im Datenblatt 'Reserved'?
Je nach eingesetzter Programmerhardware kann man mit AVRDUDE mit dem Schalter -B <Periodendauer in µs> die SPI-Geschwindigkeit runtersetzen. -B 100 wären dann 10kHz.
S. L. schrieb: > Fuse Low byte 0xF7: u.a. 'Full swing Crystal Oscillator': ist dieser 16 > MHz-Quarz korrekt angeschlossen, incl. der Kondensatoren? > > Fuse High byte 0xD6: u.a. Bootloader, spielt hier aber keine Rolle > > Extended Fuse byte 0xF9: 'BODLEVEL' - da lese ich im Datenblatt > 'Reserved'? 1. Ja, habe die Verkabelung schon zig mal kontrolliert, entwender ich mache immer den gleichen Fehler, oder es ist was anderes. 2. Ok, sollte hoffentlich passen. 3. BODLevel soll beim 644 wohl 110 sein, so wie ich es hinterlegt hatte...
Beitrag #7502898 wurde vom Autor gelöscht.
Ingo W. schrieb: > Je nach eingesetzter Programmerhardware kann man mit AVRDUDE mit dem > Schalter -B <Periodendauer in µs> die SPI-Geschwindigkeit runtersetzen. > -B 100 wären dann 10kHz. richtig, das hatte ich auch gefunden, aber solang der Atmega keinen richtigen Takt hat wie er ihn braucht, hilft das leider, nach meinem Verständnis auch erstmal nicht weiter.
Probeweise einen Hilfstakt > 1 MHz an XTAL1 einspeisen; z.B. mit einem
der UNOs erzeugt.
PS:
> ... immer den gleichen Fehler ...
Korrekt an XTAL1&2 angeschlossen (nicht etwa an TOSC1&2)?
:
Bearbeitet durch User
S. L. schrieb: > Probeweise einen Hilfstakt > 1 MHz an XTAL1 einspeisen; z.B. mit einem > der UNOs erzeugt. avrdude: warning: cannot set sck period. please check for usbasp firmware update. avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.02s avrdude: Device signature = 0x1e9609 (probably m644) avrdude: reading lfuse memory: Reading | ################################################## | 100% 0.01s avrdude: writing output file "<stdout>" :01000000F708 :00000001FF avrdude: safemode: Fuses OK (E:FF, H:99, L:F7) avrdude done. Thank you. So, da geht doch schon etwas mehr! Danke! Nun also noch herausfinden wie ich ihn auf externen Quartz umstelle, das verstehe ich aber nicht, das Datenblatt hilft mir auch nicht wirklich weiter, da auch die Begriffe des external oscillators immer durcheinander gewürfelt werden... Full Swing Crystal Oscillator muss doch aktiviert sein für den 16.000MHz Quarz oder verstehe ich jetzt was falsch?
Dieser Aufsatz hilft dir womöglich, das Problem besser zu verstehen und Fehler in Zukunft zu vermeiden: http://stefanfrings.de/avr_verfused/index.html
> ... geht doch ...
Yô - sieht für mich gut aus; ich vermute, dass mit dem Quarz oder den
Kondensatoren etwas nicht stimmt.
> Full Swing Crystal Oscillator muss doch aktiviert sein für > den 16.000MHz Quarz oder verstehe ich jetzt was falsch? Full Swing Crystal Oscillator ist für einen Quarz. Du hast allerdings auch JTAG aktiviert, war das Absicht? Dadurch sind einige I/O Pins nicht frei verwendbar. Steckbretter haben viel störende Kapazität zwischen den Kontaktleisten. Manchmal funktioniert damit der Quarz-Oszillator nicht. In dem Fall kann man versuchen, die beide Kondensatoren zu verkleinern oder ganz weg zu lassen. Wichtig ist dabei auch, dass die GND Anschlüsse der Kondensatoren möglichst direkt zum GND Pin des IC führen, also ohne weitere Drahtbrücken dazwischen.
> Du hast allerdings auch JTAG aktiviert ...
Mit 'Fuse High byte' 0xD6?
PS:
Also das 0xD6 vom Anfang war gemeint.
:
Bearbeitet durch User
S. L. schrieb: > Mit 'Fuse High byte' 0xD6? Nein mit F7. Vielleicht habe ich mich auch vertan. Schau dir das im Engbedded fuse Calculator an. Da kannst du unten die Hex Zahlen eingeben, auf apply klicken, und dann darüber sehen, was es bewirkt.
F7 ist das Fuse Low byte - hat nichts mit JTAG zu tun; dieses wird mit dem Fuse High byte geschaltet: abgeschaltet mit dem ursprünglichen D6, eingeschaltet mit dem 99, das avrdude zuletzt meldete.
Stefan F. schrieb: > Dieser Aufsatz hilft dir womöglich, das Problem besser zu verstehen und > Fehler in Zukunft zu vermeiden: > http://stefanfrings.de/avr_verfused/index.html top, sowas hatte ich gesucht! Das werded ich mir morgen mal in Ruhe durchlesen!
Stefan F. schrieb: > In dem Fall kann > man versuchen, die beide Kondensatoren zu verkleinern oder ganz weg zu > lassen. 1A!!! Das wars, nun geht es auch mit dem Quartz!! Herzlichen Dank!
S. L. schrieb: > Welchen Wert hatten die Kondensatoren? Auf der Packung stand 22pF... ggf haben sie einen anderen Wert, oder aber das Steckbrett ist nicht (mehr) gut. Auch hatte ich GND über ein Jumper-Kabel gesetzt.
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.