AVR Fuses
Allgemein
Mittels sog. Fuses kann auf die Funktionsweise eines AVR Controllers entscheidend Einfluss genommen werden. So wird z.B. die Taktquelle - Externes CLK-Signal, ext. Resonator, ext. Quarz, ext. Quarzoszillator, ext, RC-Oscillator oder interner RC-Oscillator mittels der Fuses festgelegt. Falsch programmierte Fuses können zu einem Fehlverhalten führen bzw. sogar zur kompletten funktionslosigkeit. Z.B. wenn der AVR (versehentlich) auf ein externes CLK-Signal programmiert wurde, aber ein externer Quarz angeschlossen ist. In diesem Fall wird der AVR mit keinem Takt versorgt und wird einfach stehen bleiben. Die Fuses können dann auch nicht mehr umprogrammiert werden. Es muss ein externer Rechteckgenerator angeschlossen werden, der das erweartete CLK-Signal generiert, damit der AVR wieder ansprechbar und damit die Fuses wieder änderbar sind. Es gibt auch die Möglichkeit die Fuses mittels eines sog. High Voltage Programmers zu ändern, dies soll hier aber nicht weiter vertieft werden.
Standardmäßig werden die AVR Controller mit sicheren Fuse-Settings (z.B. interner RC-Oscillator) ausgeliefert, sodass diese problemlos auf die gewünschte Zielplattform angepasst werden können.
Bestimmung der nötigen Fuses
Die Belegung der Fuses hängt zum einen vom Controller und zum anderen von der Zielhardware ab. Die verfügbaren Fuses und deren Funktion sind ausführlich in den Datenblättern eines jeden AVR Controllers aufgeführt. Es gibt leider kein eigenes Kapitel für die Fuses, sondern die Fuses sind quer über das gesamte Datenblatt verstreut.
Hinweis: | |
|
Fuses ATMega644
Hier beispielhaft die Fuses eines ATMega644 (Seite 285 im Datenblatt) :
- Extended Fuse Byte
Fuse Bit Description Default-Wert NA 7 - 1 NA 6 - 1 NA 5 - 1 NA 4 - 1 NA 3 - 1 BODLEVEL2 2 Brownout Detektor Level 1 BODLEVEL1 1 Brownout Detektor Level 1 BODLEVEL0 0 Brownout Detektor Level 1
- Fuse High Byte
Fuse Bit Description Default-Wert OCDEN 7 Enable OCD (On Chip Debugging) 1 (OCD disabled) JTAGEN 6 JTAG Enable 0 (JTAG enabled) SPIEN 5 Enable Serial Programming Interface 0 (SPI enabled) WDTON 4 Watchdog Timer always on 1 (disabled) EESAVE 3 EEPROM wird beim Chip Erase nicht gelöscht 1 (EEPROM wird gelöscht) BOOTSZ1 2 Bootloader Size 0 BOOTSZ1 1 Bootloader Size 0 BOOTRST 0 Jump to Bootloader during Reset 1 (disabled)
- Fuse Low Byte
Fuse Bit Description Default-Wert CKDIV8 7 Clockteiler 8fach 0 (enabled) CKOUT 6 Clock Output 1 (disabled) SUT1 5 Select Startup Time 1 SUT0 4 Select Startup Time 0 CKSEL3 3 Select Clock Source 0 CKSEL2 2 Select Clock Source 0 CKSEL1 1 Select Clock Source 1 CKSEL0 0 Select Clock Source 0