Forum: Mikrocontroller und Digitale Elektronik Fuse Bits setzen


von Stefan W. (Gast)


Lesenswert?

Hallo,

ich bin leider etwas durcheinander geraten, mit invertierter logik usw..

Ich möchte einen ATMega8 mit einem Standartquarz 3,6848 MHz betreiben:

genau wie es auf dieser seite beschrieben ist, ganz unten:

http://s-huehn.de/elektronik/avr-prog/avr-prog.htm


leider habe ich nur linux und avrdude ;-)

das ist der aktuelle Zustand:

avrdude: safemode: lfuse reads as E1
avrdude: safemode: hfuse reads as 99
avrdude: safemode: Fuses OK



Wenn ich also meinen Möchtegern Zustand auf diesen Rechner:
http://palmavr.sourceforge.net/cgi-bin/fc.cgi

übertrage werden diese Werte errechnet:


Current:   0xBF  0x99


Damit hätte ich die gewünschte Einstellung +
SPI und aktiven Watchdog Timer (war ursprünglich ja auch aktiviert)


Stimmt das? Würde mich nur gern vergewissern bevor ich flashe.

Vielen Dank
mfG
Stefan

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Stimmt.

Deine Einstellung benutzt allerdings die "Ext. Crystal/... High 
Frequency" Einstellung für den Quarz, die erst für Quarze ab 8 MHz 
notwendig ist.

Du bräuchtest für den 3,6848 MHz Quarz nur die "Ext. Crystal/... Medium 
Frequency" Einstellung. Es schadet aber nicht, den Quarz mit mehr Power 
zum Schwingen anzuregen (manche Leute bevorzugen das sogar).

Bist du sicher mit dem Watchdog? Viele Demoprogramme z.B. hier im Wiki 
berücksichtigen den Watchdog im Programmcode nicht. Du wirst dich bei 
denen wundern, dass das Programm nicht das macht, was beschrieben ist 
und was du erwartest, weil der AVR sich nach kurzer Zeit selbst 
resettet.

von Stefan W. (Gast)


Lesenswert?

Danke für die Bestätigung und die nette Erklärung!

Ist der Watchdog standardmäsig aktiviert?
Ich habe noch keine Fuses geschrieben und meine ausgelesenen werte sind 
ja:

avrdude: safemode: lfuse reads as E1
avrdude: safemode: hfuse reads as 99


Habe ich es richtig verstanden? wenn die Demoprogramme richtig 
funktionieren sollen, dann sollte ich ihn lieber nicht aktivieren 
(obwohl er bisher aktiviert war) und deshalb diese Werte nehmen:

Current:   0xBF  0xD9

Mein Programm, eine kleine Zahnputzuhr, funktioniert auch soweit. Nur 
das die Zeit manchmal von alleine losläuft obwohl die Start Taste noch 
nicht gedrückt wurde.. Ist vielleicht der aktive Watchdog dir Ursache?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Ich denke nicht, dass das Loslaufen von alleine durch den Watchdog 
kommt.

Mehr könnte man vielleicht durch die Analyse des Quelltextes deines 
Programms und ggf. des Schaltplans von angeschlossenen Bedienelementen 
sagen.

Du kannst an dieser Stelle bei den Gusebits auch nichtS kaputt machen, 
wenn du mal mit beiden Einstellungen für den Watchdog experimentierst. 
Du kannst dich nur mit diesem einen Fusebit nicht "aussperren". Eine 
gesunde Vorsicht ist bei anderen Fuses angebracht (s. AVR Fuses.

Du wirst ziemlich schnell sehen, ob dein Programm bei beiden möglichen 
Einstellungen unterschiedlich arbeitet oder nicht. Und die "richtige" 
einstellung kannst du dann weiter benutzen.

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
Noch kein Account? Hier anmelden.