Gast
#3052191
Hallo, ich habe gerade ein Problem mit dem E-fuse eines Atmega1281 unter Verwendung von Avrdude. Bei dem Atmega1281 sind sowohl im E-fuse Byte als auch im Lock-fuse Byte Bits nicht verwendet. (laut Datenblatt) Jetzt wollte ich die Brown Out Detection auf 4,3V setzen. Das würde normalerweise 0xFC entsprechen. Nun habe ich schon etwas gesucht und rausgefunden das es wohl unter Avrdude "fehler" beim rücklesen der nicht genutzten Bits kommt und daher die Verifizierung der Fuses fehlschlägt. Für die Lock Bits war das auch kein Problem anstelle von 0xFC musste dort 0x3C gesetzt werden, sprich die beiden nicht genutzten Bits auf 0. Bei den Lock Bits funktioniert anschließend sowohl das Setzen als auch verifizieren ohne Probleme. Sprich mit Avrdude 0x3C gesetzt, anschließend mit dem "myAvr Prog Tool" für den MySmartUSB light die Fuses ausgelesen und als Ergebnis 0xFC erhalten. Bei dem E-Fuse wird es jetzt allerdings etwas komisch. Versucht man es analog zum Lock-Fuse so müsste aus 0xFC -> 0x04 werden (ungenutzte Bit 3..7 auf 0). (Das ist auch der Vorschlag des Fusecalc http://www.engbedded.com/fusecalc) Setzte ich jetzt mit Avrdude 0x04 als E-Fuse so bekomme ich einen Fehler bei der Verifizierung 0x04 gegen 0xF4. Hier funktioniert es also scheinbar nicht so leicht wie bei den Lockbits. Also dachte ich mir gebe ich Avrdude halt das was es verlangt. Setzte also 0xF4 nun gibt es seitens Avrdude keine Fehlermeldung mehr. Lese ich jetzt allerdings mit dem "myAvr Prog Tool" die Fuses aus, so erhalte ich auch 0xF4. Sprich es wurde wirklich 0xF4 gesetzt (und somit das ungenutzte Bit4 beschrieben) Jetzt die eigentliche Frage wieso kann Avrdude im Falle der E-Fuses wirklich in die ungenutzten Bits schreiben im Falle von den Lock-Bits aber nicht ? Und ist es als problematisch anzushen wenn jetzt das "ungenutzte" Bit4 gesetzt ist ?