Infos












Kleiner Bascom AVR Kurs

Der folgende Bascom AVR Kurs ist erstellt von Gerold Penz und kann auch auf seiner Website nachgelesen werden.
Zum Bascom-Kurs von Gerold Penz

Fuse- und Lock-Bits: Teil 1

Hallo!

Jetzt möchte ich ein Thema erklären, welches von vielen ungern angesprochen wird. Aber so undurchsichtig ist es eigentlich gar nicht -- wenn man die richtigen Werkzeuge zur Hand hat oder ein wenig im Datenblatt des jeweiligen µC stöbert. Ich spreche von den Fuse-Bits und den Lock-Bits.

Die Fuse-Bits und Lock-Bits sind die Grundeinstellungen des AVR-Mikrocontrollers. Diese Grundeinstellungen werden nicht beim normalen Übertragen eines Programmes geändert oder gelöscht. Unter anderem wird in diesen Grundeinstellungen festgelegt, ob der µC mit dem internen RC-Oszillator oder mit einem externen Quarz betrieben wird.

Der ATmega8 hat einen RC-Oscillator eingebaut. Dieser liefert in der Basiseinstellung einen Takt von 1 Mhz. Diese Basiseinstellung kann man verändern. Z.B. so, dass der interne RC-Oszillator mit 8 Mhz und nicht mehr mit 1 Mhz läuft. Das ist noch nicht schlimm. Aber damit kann man auch einstellen, dass der Takt von einem externen Quarz oder Oszillator kommt. Hat man das so eingestellt und schließt keinen Quarz an, dann läuft der µC nicht bis ein Quarz angeschlossen wird.

Die Fuse- und Lock-Bits können mit einem Programmer verändert werden. Ist der Programmer ein ISP-Programmer (In System Programming), dann kann man alle Einstellungen, bis auf die Einstellung die dafür zuständig ist, dass man den µC per ISP programmieren kann, verändern.

Die Fuse-Bits für den Systemtakt werden sehr detailliert im Kapitel "System Clock and Clock Options" im detaillierten ATmega8-Datenblatt erklärt. Dann gibt es noch Einstellungen, die den Brown Out Detektor, den Watchdog Timer und den Boot Loader betreffen. Das haben wir noch nicht besprochen, deshalb gehe ich jetzt nicht näher darauf ein. Es gibt da noch eine Einstellung mit der man den Reset-Pin in einen normalen I/O-Pin umschalten kann. Wenn man das macht, dann kann der µC nicht mehr über ISP programmiert werden. Also Finger weg von der Einstellung mit dem Namen "RSTDISBL". Das kann man nur wieder umstellen, wenn man den µC mit einem speziellen Programmer (z.B. dem AVR-Dragon) programmiert.

Dann gibt es noch die Lock-Bits. Mit diesen Einstellungen kann man z.B. den Programmcode vor dem Auslesen schützen. Der eingebaute EEPROM-Speicher kann auch geschützt werden. Die Lock-Bits werden im detaillierten ATmega8-Datenblatt im Kapitel "Program And Data Memory Lock Bits" aufgelistet.

Das Verwirrende bei den Fuse- und Lock-Bits ist, dass eine 1 bedeutet, dass die Einstellung NICHT gesetzt ist und eine 0 bedeutet, dass die Einstellung GESETZT ist. Es ist also genau umgekehrt als das, was wir gewohnt sind.

Bei den Lock-Bits kann man nichts falsch machen wenn man sie einfach unprogrammiert (auf 1 gesetzt) lässt. Deshalb werde ich nicht weiter darauf eingehen. Wer mehr darüber wissen will, sollte sich im ATmega8-Datenblatt darüber informieren.

Die Lock- und Fuse-Bits werden im detaillierten Datenblatt des ATmega8 im Kapitel "Memory Programming" genau erklärt.

Die Fuse-Bits befinden sich in zwei Registern. Es handelt sich also um 16 Einstellungen (einzelne Bits) die auf 0 oder 1 gesetzt werden können. Diese zwei Register werden in den verschiedenen Programmen oft "High Byte" und "Low Byte" genannt. Diese werden in den Programmen, die man zum Einstellen der Fuse-Bits verwenden kann, auch manchmal einzeln angezeigt.

Im Fuse High Byte des ATmega8 befinden sich diese Einstellungen:

Table 87. Fuse High Byte

Fuse High Byte

Bit No.

Description

Default Value

RSTDISBL (4) 7 Select if PC6 is I/O pin or RESET pin 1 (unprogrammed, PC6 is RESET-pin)
WDTON 6 WDT always on 1 (unprogrammed, WDT enabled by WDTCR)
SPIEN (1) 5 Enable Serial Program and Data Downloading 0 (programmed, SPI prog. enabled)
CKOPT (2) 4 Oscillator options 1 (unprogrammed)
EESAVE 3 EEPROM memory is preserved through the Chip Erase 1 (unprogrammed EEPROM not preserved)
BOOTSZ1 2 Select Boot Size (see Table 82 for details) 0 (programmed) (3)
BOOTSZ0 1 Select Boot Size (see Table 82 for details) 0 (programmed) (3)
BOOTRST 0 Select Reset Vector 1 (programmed)

Notes:
  1. The SPIEN Fuse is not accessible in Serial Programming mode.
  2. The CKOPT Fuse functionality depends on the setting of the CKSEL bits, see "Clock Sources" on page 24 for details
  3. The default value of BOOTSZ1..0 results in maximum Boot Size. See Table 82 on page 217.
  4. When programming the RSTDISBL Fuse Parallel Programming has to be used to change fuses perform further programming.



Im Fuse Low Byte des ATmega8 befinden sich diese Einstellungen:

Fuse High Byte

Bit No.

Description

Default Value

BODLEVEL 7 BROWN out detector trigger level 1 (unprogrammed)
BODEN 6 BROWN out detector enable 1 (unprogrammed, BOD disabled)
SUT1 5 Select start-up time 1 (unprogrammed)(1)
SUT0 4 Select start-up time 0 (programmed)(1)
CKSEL3 3 Select Clock source 0 (programmed) (2)
CKSEL2 2 Select Clock source 0 (programmed) (2)
CKSEL1 1 Select Clock source 0 (programmed) (2)
CKSEL0 0 Select Clock source 1 (unprogrammed)(2)


Notes:

  1. The default value of SUT1..0 results in maximum start-up time. See Table 10 on page 28 for details.
  2. The default setting of CKSEL 3..0 results in internal RC Oscillator @ 1MHz. See Table 2 on page 24 for details.
Wichtig:
Wenn man nicht weiß, wie ein Bit eingestellt werden soll, dann sollte man die in diesen Tabellen aufgezeigte Standardeinstellung verwenden.
Die gleichnamigen Bits, wie z.B. SUT1 und SUT0 bilden zusammen eine Einstellung. Und wenn man wissen will was eine Einstellung genau bewirkt, dann sollte man das ATmega8-Datenblatt nach dieser Einstellung durchsuchen. Das funktioniert mit allen gängigen PDF-Reader wie z.B. dem "Foxit Reader" oder dem "Adobe Reader".

Im nächsten Beitrag erkläre ich, wie man mit dem mySmartUSB die Fuse-Bits einstellen kann.

Den zugehörigen Original-Beitrag findest du im Loetstelle-Forum.

weiter zu Teil 2


myMCU Seminare

Ab sofort bieten wir auch Seminare zur Mikrocontroller-Programmierung an
Mehr Informationen erhalten Sie hier   

AVR-Produktlinie

mySmartUSB

myEthernet

Unsere Regionalpartner

Wir suchen noch Regionalpartner!

In Ihrem Land gibt es noch keinen Regionalpartner?
Nehmen Sie mit uns Kontakt auf und vertreiben Sie unsere Produkte in Ihrer Region!

Wir sind Sponsor

... von Roboternetz, der größten deutschen Roboter-Community »»»

Hinweis

Sie müssen Ihre Cookies eingeschalten haben, um unseren Shop vollständig nutzen zu können.