mcpg
AVR-FUSE-Bits
1 AbstractDas vorliegende Dokument beschreibt die Bedeutungen und Funktionen der FUSE-Bits der AVR-Mikrocontroller von Atmel. 2 Was sind Fusebits und wofür brauchen wir Sie?Fusebits sind programmierbare Speicherzellen des Mikrocontroller. Durch Setzen oder Löschen diser Speicherzellen können bestimmte Funktionen des Mikrocontrollers aktiviert oder deaktiviert werden und verschiedener Parameter konfiguriert werden. Zu den wichtigsten Einstellungen bei der AVR-Mega Serie zählen:
Die Fusebits sorgen beim Einsteiger des öfteren für Verwirrung, da eine inverse Logik benutzt wird. Das Fusebit ist 0 wenn es programmiert (an) ist und 1 wenn es unprogrammiert (aus) ist. Um die Verwirrung zu verfollständigen werden bei Brennprogrammen und der gleichen Programmierte Fusebits mit einem Häckchen dargestellt (und umgkehrt). MERKREGEL! FUSEBIT = ein (aktiviert) = 0 = mit Häckchen FUSEBIT = aus (inaktiv) = 1 = ohne Häckchen 2.1 FUSE-Bits KalkulationJe nach Controller stehen bis zu drei Fusebytes zur Verfügung: Fuse Low Byte, Fuse High Byte und Extended Fuse Byte. Einige ältere Controllertypen haben nur ein Fuse Byte und wenige Fusebits. Die Fusebits sind beim ATmega in einem Low- u. Highfuse(byte) zusammengefaßt. Mit dem Fusebitcallkulator unter http://www.engbedded.com/fusecalc/ lasssen sich die erforderlichen Werte relativ einfach ermitteln. Standartmäßig (bei Neuauslieferung) ist der ATMega16 auf folgende Werte eingestellt:
ACHTUNG! ??? 2.2 FUSE-Bits ProgrammierungFusebits lassen sich über ISP, JTAG oder parallel einstellen/programmieren. Man benutz hierzu die gleiche Hardware und Software wie zum Programmieren des Flash Speichers. Eine Schritt für Schritt Anweisung zur Programmierung der FUSE-Bits ist Abschnitt 3 von "K-CPU-Modul Programmierung" beschrieben. Dort wird auch die erforderlich Hardware beschrieben. 3 Fusebits mit ihrer Standarteinstellung und Bedeutung
Mit BODLEVEL kann zwischen den Werten gewechselt werden, mit BODEN wird die Funktion komplett deaktiviert. Neuere Controller (zb ATmega168) haben 3 BODLEVEL Fusebits mit denen mehrere Schwellwerte eingestellt werden können bzw die gesamte Funktion deaktiviert wird. Ab Werk ist bei allen Typen die BOD Funktion abgeschaltet.
rt werden. CKSEL Die wohl am häufigsten geänderten Fusebits sind CKSEL0 bis CKSEL3 (Select Clock Source). Mit ihrer Hilfe wählt man die Taktquelle aus der der Controller seinen Takt erhält. Hier ist etwas Vorsicht geboten da eine falsche Einstellung den Controller lähmen kann. Eine falsche Einstellung lässt sich jedoch relativ leicht beheben. Die genauen Parameter können zwischen den einzelnen Typen variieren Default: Interner RC Oszillator mit 1MHz (bzw 8MHz bei Typen mit Vorteiler) CKSEL0 : 0 (programmiert) CKSEL1 : 1 (unprogrammiert) CKSEL2 : 1 (unprogrammiert) CKSEL3 : 1 (unprogrammiert) Sollte man hier einen Fehler machen, kann man versuchen ihn mit einem externen Takt zu beheben. Wie man am besten vorgeht steht im Kapitel Takt falsch gesetzt.
Divide Clock by 8 ist etwas irreführend. Wenn dieses Fusebit gesetzt ist wird ein Vorteiler aktiviert, der den Takt für den Controller durch 8 teilt. Es ist jedoch möglich diesen Vorteiler auf einen anderen Wert einzustellen. Dies ist dann sinnvoll wenn der Controller aus einer externen Taktquelle gespeist werden soll, die Frequenz aber zu hoch ist. Details dazu im Artikel Taktquelle. Default CKDIV8 : 0 (programmiert) CKOUT Wird diese Fuse programmiert wird der CPU Takt an dem entsprechenden CLKO Pin ausgegeben. Default CKOUT : 1 (unprogrammiert) CKOPT CKOPT kommt zum Einsatz wenn der AVR von einem externen Quarz getaktet wird. Wird CKOPT programmiert (0) schwingt der Oszillator mit der maximalen Amplitude. Dies kann notwendig werden wenn der AVR in einer Umgebung mit vielen Störsignalen betrieben werden soll. Ist CKOPT unprogrammiert (1) schwingt der Oszillator mit einer niedrigeren Amplitude. Dadurch verringert sich die Stromaufnahme und die Störabstrahlung. Default: CKOPT : 1 (unprogrammiert) RSTDISBL Dieses Fuse Bit steuert die Funktion des Reset Pin. Wird es programmiert kann man den Reset Pin als normalen IO Pin verwenden. Achtung: Wird dieses Bit programmiert kann der Controller nicht mehr über die ISP Schnittstelle erreicht werden Default: RSTDISBL : 1 (unprogrammiert) SPIEN Mit SPIEN kann die ISP Schnittstelle abgeschaltet werden. Dieses Fusebit lässt sich nur über die parallele Programmierung ändern. Ist die ISP Schnittstelle einmal abgeschaltet kann der Controller nicht mehr über ISP erreicht werden. Default: SPIEN : 0 (programmiert) JTAGEN JTAGEN aktiviert/deaktiviert die JTAG Schnittstelle. Default: JTAGEN : 0 (programmiert) DWEN DWEN aktiviert/deaktiviert die debugWire Schnittstelle. Default: DWEN : 1 (unprogrammiert) OCDEN OCDEN aktiviert/deaktiviert das On-Chip Debug System. Das On-Chip Debug System kann unabhängig von der JTAG Schnittstelle deaktiviert werden. Bei abgeschaltetem OCD kann der Controller über JTAG nur programmiert werden. Default: OCDEN : 1 (unprogrammiert) EESAVE Wird EESAVE programmiert wird das EEprom bei einem Chip Erase vor dem Löschen geschützt. Ein Chip Erase löscht normalerweise den kompletten Speicher. Default: EESAVE : 1 (unprogrammiert) WDTON Mit WDTON kann der Watchdog Timer permanent aktiviert werden. Ist dieses Fusebit nicht programmiert (1) kann der Watchdog per Software gesteuert werden. Default: WDTON : 1 (unprogrammiert) BOOTRST BOOTRST bestimmt an welche Adresse nach einem Reset gesprungen wird. Unprogrammiert (1) springt der Controller nach einem Reset an Adresse $0000. Wird das Fusebit programmiert springt der Controller nach einem Reset an den Beginn des Bootloaders. Die Adresse hängt vom Controller und von den Einstellungen der BOOTSZ Fusebits ab. Default: BOOTRST : 1 (unprogrammiert) BOOTSZ Mit BOOTSZ wird die Größe des Speicherbereiches bestimmt der für den Bootloader reserviert wird. Die Größe ist abhängig vom Controllertyp. Dieser Speicherbereich befindet sich immer am Ende des Flash Adressraumes.. Default: BOOTSZ : siehe Datenblatt Compatibility Bits Viele Controller haben ein Compatibility Bit. Mit diesem Bit lässt sich der Controller in einen Modus versetzen in dem er sich exakt so verhält wie sein Vorgänger. Beim ATmega128 gibt es zB das M103C Bit. Der ATmega128 verhält sich also wie ein ATmega103. Ob das Compatibility Bit ab Werk programmiert ist oder nicht hängt vom Controller ab. SELFPRGEN SELFPRGEN aktiviert/deaktiviert die Self Programming Funktion. Default: SELFPRGEN : 1 (unprogrammiert) HWBEN HWBEN aktiviert/deaktiviert die Hardware Boot Funktion Default: HWBEN : 0 (programmiert) Sollte ich ein Fusebit vergessen haben oder neue dazukommen bitte ergänzen. Vorsicht beim Verändern von RSTDIBL [ ] und SPIEN [x], der Mikrocontroller kann dann nicht mehr ohne weiteres umprogrammiert 4 Anhang4.1 Weitere Unterlagen und Links
Return to Top |
|||||||||||||
Postfach 11 01 48 86026 Augsburg
Telefon: (0821) 59 21 89 |