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.