Quarze, Quarzoszillatoren und Fuse Bits

Die interne Taktfrequenz kann eingestellt werden, üblicherweise im Bereich von 1..8 MHz. Statt mit dem standardmäßig verwendeten internen RC-Oszillator kann der Mikrocontroller auch mit einem externen Takt arbeiten.

Dies macht man vor allem, um eine höhere Ganggenauigkeit zu erreichen, wenn es auf das Timing ankommt (Aufbau von Uhren, Kommunikation mit anderen Schaltungen mit fester Bitrate usw.). Quarze und Quarzoszillatoren bieten diese höhere Ganggenauigkeit. Neben diesen kann auch noch ein externer RC-Schwingkreis angeschlossen werden, worauf ich aber nicht näher eingehen möchte, weil hier keine höhere Ganggenauigkeit vorhanden ist.


Programmieren der Fuse-Bits mit SP12

Fuse-Bits sind Konfigurations-Bits, mit denen man Low-Level-Funktionen des Mikrocontrollers einstellen kann. Die Bits können ausschließlich durch Programmiersoftware geändert werden (also nicht von der laufenden Software).

Hinweis: Als Einsteiger sollte man diese Bits zunächst ignorieren. Erst wenn man wie hier beschrieben beispielsweise eine externe Taktquelle benötigt, muss man diese Bits ändern. Bitte vor dem Schreiben der Bits immer im Datenblatt lesen. Das Setzen der falschen Bits kann dazu führen, dass der Mikrocontroller nicht mehr anzusprechen ist.


interner Oszillator mit anderer Taktfrequenz

Der interne RC-Schwingkreis ("Calibrated Internal RC Oszillator") wird im Auslieferungszustand mit 1 MHz betrieben. Durch Setzen der Fuse-Bits kann diese Taktfrequenz verändert werden.

CKSEL

Die Fuse-Bits CKSEL (Clock Select) bestimmen, welche Taktquelle verwendet wird und in welchem Frequenzbereich sie liegt. Mit dem Befehl

SP12 -rF

kann man die Fuse-Bits anzeigen lassen.

Sie sehen z.B. so aus: 11100001. Wichtig sind hier die letzten Bits. Mit

SP12 -wF11100111

kann man die Taktfrequenz z.B. auf 8 MHz einstellen. Diese Angabe gilt für den ATMega8. Die vorderen 4 Bits sollten unverändert bleiben.


Quarze

Quarze werden an XTAL1 und XTAL2 angeschlossen. Zusätzlich ist es erforderlich, zwei Folienkondensatoren anzuschließen. Auf dem Bild rechts sind ein Uhrenquarz (32768 Hz, durch Teilung ist leicht ein 1-Sekunden-Takt zu erzeugen), ein 4MHz Quarz in kleiner Bauform und ein 18,432 MHz Quarz (durch Teilung kommt man auf die bei seriellen Schnittstellen üblichen Bitraten von z.B. 115200 Bit/s) zu sehen. Damit der externe Quarz als Taktgeber verwendet werden kann, müssen im Mikrocontroller die richtigen Fuse-Bits gesetzt werden.

Mit folgendem Befehl stellt man die Fuse-Bits so ein, dass ein externer Quarz benutzt wird (ATMega8):
SP12 -wF11101111

Man sollte vorher bereits einen Quarz korrekt anschließen, da sonst ab jetzt der Mikrocontroller nicht mehr ansprechbar ist.

CKOPT

Mit CKOPT kann der Frequenzbereich des externen Quarzes eingestellt werden. Will man den Mikrocontroller mit mehr als 8 MHz betreiben, ist das CKOPT Bit zu aktivieren (das bedeutet bei Fuse Bits das Setzen auf "0"). Das CKOPT Bit gehört zu den High-Fuses und ist mit

SP12 -rH

auszulesen.

ATMega8
ATMega32
Default:
Default:
Das CKOpt Bit kann gesetzt werden mit:
SP12 -wH1001001
Das CKOpt Bit kann gesetzt werden mit:
SP12 -wH10001001

Hier gilt wiederum, dass nur das CKOPT Bit geändert werden sollte und die anderen Bits so bleiben wie sie waren.


Quarzoszillatoren

Quarzoszillatoren benötigen eine Spannungsversorgung und schwingen dann ohne weitere Bauteile mit der aufgedruckten Frequenz. Bei der Benutzung von Quarzoszillatoren schließt man nur den CLOCK-Pin des Oszillators an XTAL1 an. XTAL2 bleibt unbeschaltet (nicht mit Masse verbinden!). Bei Quarzoszillatoren zeigt ein Punkt auf dem Gehäuse Pin 1 an.

Wiederum muss durch Setzen der Fuse Bits die Verwendung des Quarzoszillators konfiguriert werden. Dies geschieht mit

SP12 -wF11100000


Weitere Fuse-Bits

Die Bedeutung der anderen Fuse-Bits sei hier kurz erwähnt:

BODLEVEL schaltet die Spannungsschwelle für die Unterspannungs-Erkennung um. Brownout Detection schaltet die Unterspannungs-Erkennung ein. Die SU Bits konfigurieren die Zeit, die der Mikrocontroller nach einem Reset wartet, bis er mit der Programmausführung loslegt. WDT konfiguriert den Watchdog vor. Das ISP kann mit dem serial Programming Bit ein- und ausgeschaltet werden. Mit einem eeprom erase Bit kann angegeben werden, dass das EEPROM bei einem Löschvorgang nicht gelöscht werden soll. Mit BZ (Boot Size) und dem Reset at Bootloader Bit wird ein Bootloader konfiguriert. Falls vorhanden, schaltet JTAG eine Debug-Schnittstelle ein oder aus. Bei einigen Mikrocontrollern (z.B. ATMega32) muss die JTAG Schnittstelle erst deaktiviert werden, damit der Port C zur normalen Ein-/Ausgabe genutzt werden kann.