Hi Ich habe noch nicht ganz verstanden, wie man mit AVRDUDE die Fuses programmiert, weil ich dies bis jetzt nur mit dem AVR-Studio gemacht habe. Ich habe mir bis jetzt avrdude (nicht WinAVR) runtergeladen und mir die Dokumentation angeguckt, lese dort aber immer nur von lfude, hfuse und efuse. Wie "rechne" ich jetzt CKSEL Bits in das von AVRDUDE verwendete Format um? Könnte mir jemand ein Beispiel zeigen (am besten wie ich den ATMega8515 auf einen Externen Quarzoszillator umstelle)? Danke!
schau mal in appnote 61 von atmel ganz am ende, da steht welche h/lfuses welche bits enthalten
Du liest die Fuses aus, rechnest sie in Binärzahlen um, und schaust ins Datenblatt, was sie bedeuten, um erstmal ein Gefühl dafür zu kriegen, was Du machst. Beispiel an meinem ATMega8: avrdude> read hfuse >>> read hfuse 0000 d9 avrdude> read lfuse >>> read lfuse 0000 e4 Das ist also 11011001 (h) 11100100 (l) in binär. Also ein Blick ins Datenblatt (in dem Falle Seite 220): High Bit: RSTDISBL 1 (1) WDTON 1 (1) SPIEN 0 (0) CKOPT 1 (1) EESAVE 1 (1) BOOTSZ0 0 (0) BOOTSZ1 0 (0) BOOTRST 1 (1) Low Bit: BODLEVEL 1 (1) BODEN 1 (1) SUT1 1 (1) SUT0 0 (0) CKSEL3 0 (0) CKSEL2 1 (0) CKSEL1 0 (0) CKSEL0 0 (1) In Klammern jeweils der default-Wert laut Datenblatt (wie man sieht habe ich nur an der Clock gespielt). Bei mir ist also die interne Clock auf 0100 gesetzt, das ist 8 MHz (Table 9, Seite 28). Will ich jetzt zum Beispiel einen Takt von 1 MHz haben, dann wähle ich die Stellung 0001 (die auch Default ist), und setze dazu das gesamte Byte auf 11100001 (in Hex 0xe1), z.B. durch 'w lfuse 0 0xe1'. Scheint im Nachhinein auch ganz logisch, die Clock-Options sind das untere Nibble, und das wird von 4 (0100) auf 1 (0001) gesetzt, also aus 0xe4 mach 0xe1. Um Dir also die genauen Werte zu sagen, die Du brauchst, muß man den Rest der Fuse kennen und das passende Datenblatt haben. Aber einfach mal selbst basteln, lies es einfach aus und schau, ob es sinnvoll erscheint. Wenn ja, dann hast Du's wohl richtig gemacht, und kannst an das Ändern und Schreiben gehen. Aber dran denken, daß 0 für "programmed" und 1 für "not programmed" steht (steht aber auch immer als Binärzahlen im Datenblatt), also nicht erschrecken, wenn RSTDISBL (also das Disablen von RESET) auf 1 steht und es gar auf 0 ändern! 1 heißt hier "not programmed", und das ist es, was man vermutlich will.
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.