FuseBit Atmega 644 verstellt?

OP #7502769
Lesenswert?

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

OP #7502822
Lesenswert?

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.

(Firma: Gast) #7502827
Lesenswert?

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.

OP #7502842
Lesenswert?

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.)

#7502851
Lesenswert?

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'?

OP #7502893
Lesenswert?

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 von einem Moderator gelöscht.
OP #7502901
Lesenswert?

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.

OP #7502943
Lesenswert?

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?

Gast #7502955
Lesenswert?

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.

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