Bascom-AVR

Kleiner Bascom AVR Kurs -
Fuse-Bits 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:

fuse_high_byte.gif

Im Fuse Low Byte des ATmega8 befinden sich diese Einstellungen:

fuse_low_byte.gif

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.


mfg Gerold :-)



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