Mathias hat geschrieben:Ich denke, es wird momentan das besten sein die Fuses in ruhe zu lassen. Der AVR ist komplexer als er auf den ersten Blick aussieht.
Nein, ist er nicht. Du interpretierst da zu viel rein. Und die Fuses fasst man einmal an, wenn man den AVR einsetzt, und vielleicht ein zweites Mal wenn das Programm fertig ist und man ihn weitergeben und dabei vor Auslesen schützen will.
Mathias hat geschrieben:Ist ein Fuses vergleichbar mit eine INI-Datei, welche die Konfigurationen für den AVR speichert ?
Ein Controller ist kein Prozessor. Ein Controller ist ein Stück Hardware, welches mit festverdrahteten Schaltungsstrukturen (And, Or-Gatter, Vergleicher, Addierer, Subtrahierer, Zähler) ein quasi-festverdrahtetes Programm (den in den Flash eingeschriebenen Maschinencode) abarbeitet. Dabei spielt es auch keine Rolle, ob der Maschinencode bis zu 10.000 mal neu eingeschrieben werden kann. Ist er einmal drin, kann er als festverdrahtet betrachtet werden.
Ein Fuse-Bit ist eine Speicherzelle. Diese Speicherzelle bildet einen Schalter, mit dem sich bestimmte Funktionen am Controller ein- oder ausschalten lassen. Umschalten interner Takt, externer Takt, Taktfrequenz durch 8 teilen, Brown-out einschalten usw. 8 dieser Schalter werden praktischerweise zu einem Fuse-Byte zusammengefasst.
Fuses heisst das deswegen, weil das früher wie eine Sicherung arbeitete: Die Fuses waren bei der Herstellung des Controllers gesetzt (1) und wurden buchstäblich durchgebrannt, wenn man sie auf (0) haben wollte. Zurück ging nicht. EPROM - Elektronisch programmierbarer Nur-Lese-Speicher.
Später entwickelte man Technologien, wie man Bits auch wieder zurücksetzen konnte. EEPROM - Elektronisch programmierbarer und löschbarer (erase) Nur-Lese-Speicher.
Auch heute ist es so, dass die Bits im Flash anfangs auf (1) stehen und beim Programmieren die entsprechenden Bits auf (0) gesetzt werden. Man kann keine Bits von (0) auf (1) setzen. Dazu muss man den Flash vorher löschen (erase), dann stehen alle Bits wieder auf (1), und dann kann man ihn programmieren (nötige Bits auf 0). Deswegen ist bei einem Programmiervorgang eigentlich immer ein Erase nötig, dass macht der Programmer aber von allein - wenn man es ihm nicht verbietet.
Und deswegen kann man z.B. Lock-Bits auch nur zurücknehmen (Programm nicht vor Auslesen geschützt), wenn man vorher den ganzen Chip löscht. Was ungemein praktisch ist, sonst könnte jemand einfach die Lock-Bits zurücksetzen und Dein Programm auslesen.