9.   Systemtakt und Takteinstellungen

9.1   Taktdomänen und ihre Verteilung

Das nachfolgende Bild zeigt das Prinzip des Taktsystems und dessen Verteilung. Nicht alle Takte müssen zur gleichen Zeit aktiv sein. Um den Stromverbrauch zu reduzieren können Takte für verschiedene Module durch Verwenden der unterschiedlichen Sleep-Modi abgeschaltet werden.
Taktverteilung

9.1.1   CPU-Takt — clkCPU

Der CPU-Takt ist mit allen Teilen des Bausteins verbunden, die mit dem AVR-Kern zusammenarbeiten. Beispielhaft sind hier zu nennen: Die allgemeinen Register, das Status-Register und der Datenspeicher, der den Stack enthält. Das Anhalten des CPU-Taktes verhindert weitere Operationen des CPU-Kerns.

9.1.2   I/O-Takt — clkI/O

Der I/O-Takt wird für die meisten I/O-Module wie etwa die Zähler/Zeitgeber, das SPI und die USART verwendet. Der I/O-Takt wird auch für das Modul der externen Interrupts verwendet, wobei zu beachten ist, dass einige externe Interrupts durch eine asynchrone Logik erkannt werden und somit auch dann verwendet werden können, wenn der I/O-Takt abgeschaltet ist. Zu beachten ist ferner, dass die Adresserkennung im TWI Modul asynchron durchgeführt wird, wenn der I/O-Takt abgeschaltet ist. Somit ist der Empfang von Adressen in allen Sleep-Modi möglich.

9.1.3   Flash-Takt — clkFLASH

Der Flash-Takt kontrolliert die Operationen mit dem Flash-Speicher. Der Flash-Takt ist gewöhnlich immer dann aktiv, wenn der CPU-Takt auch aktiv ist.

9.1.4   Takt des asynchronen Zeitgebers - clkASY

Der asynchrone Timer-Takt ermöglicht das Takten des asynchronen Zähler/Zeitgebers mit einer externen Quarzfrequenz von 32 kHz. Da diese Taktung auch dann funktioniert, wenn sich der ATmega8 in einem Sleep-Modus befindet, kann der asynchrone Zähler/Zeitgeber als Echtzeituhr verwendet werden. Der asynchrone Zähler/Zeitgeber verwendet die gleichen XTAL-Pins wie der Haupttakt der CPU. Daher kann er nur verwendet werden, wenn für die CPU der interne RC-Oszillator verwendet wird. Die Frequenz des CPU-Taktes muss mindestens viermal so groß sein, wie die Frequenz des Oszillators für den asynchronen Timer-Takt.

9.1.5   ADU-Takt - clkADC

Der Takt für den Analog-Digitalwandler wird unabhängig von den anderen Takten erzeugt. Dadurch ist es möglich, den CPU- und I/O-Takt anzuhalten, während eine AD-Wandlung durchgeführt wird. Somit werden Störungen durch die digitalen Schaltkreise vermieden, die das Wandlungsergebnis beeinflussen können.

9.2   Taktquellen

Der Chip kann aus verschiedenen Quellen getaktet werden, die mit den Fuse-Bits ausgewählt werden. Der Takt der ausgewählten Quelle bildet den Input für den Taktgenerator des Bausteins und ist mit den entsprechenden Modulen verbunden.

Optionen der Taktung (1)
Taktung des BausteinsCKSEL3:0
Externer Quarz/Keramik-Resonator1111 - 1010
Externer Quarz niedrige Frequenz1001
Externer RC Oszillator1000 — 0101
Kalibirierter interner RC Oszillator0100 — 0001
Externer Takt0000
Hinweis
  1. „1“ bedeutet nicht programmiert, „0“ bedeutet programmiert.

9.2.1   Vorgegebene Taktquelle

Der Baustein wird ausgeliefert mit CKSEL = „0010“ und SUT = „10“ (interner RC-Oszillator mit 8 MHz, langsam ansteigende Versorgungsspannung). Dazu ist die CLKDIV-Fuse gesetzt, d.h. der Systemtakt beträgt 1 MHz.

9.2.2   Takthochlauf-Sequenz

Jede Taktquelle benötigt eine ausreichende Speisespannung UCC sowie eine minimale Anzahl von Schwingungen, bevor sie ausreichend stabil läuft.

Wenn die CPU aus dem Leistung-weg- oder Leistung-spar-Modus aufwacht, bestimmt die ausgewählte Taktquelle die Aufwachzeit und stellt einen stabilen Takt sicher, bevor der erste Befehl ausgeführt wird. Wenn die CPU nach einem Reset startet, verlängert sich die Verzögerung, damit ein stabiler Pegel der Versorgungsspannung erreicht wird, bevor mit der Abarbeitung des Programms begonnen wird.

Der Watchdog-Oszillator wird verwendet, um den Echtzeit-Anteil der Aufwachzeit zu bestimmen. Die Anzahl der Zyklen des Watchdog-Zeitgebers wird für jede Verzögerung benutzt. Die Frequenz des Watchdog-Oszillators ist von der Betriebsspannung abhängig (siehe Typische Charakteristik des ATmega8).

Anzahl der Zyklen des Watchdog-Oszillators
Typische Zeitüberschreitung (UCC = 5,0 V)Typische Zeitüberschreitung (UCC = 3,0 V)Anzahl der Zyklen
0 ms0 ms0
4,1 ms4,3 ms512
65 ms69 ms8 K (8.192)

9.3   Energiespar-Quarzoszillator

Anschluss des Quarzoszillators
Betriebsarten des Energiespar-Quarzoszillators (3)
FrequenzbereichEmpfohlener Bereich für Kondensatoren C1 and C2CKSEL[3:1] (1)
0.4 - 0.9 MHz 100 (2)
0.9 - 3.0 MHz 12 - 22 pF 101
3.0 - 8.0 MHz 12 - 22 pF 110
8.0 - 16.0 MHz 12 - 22 pF 111
Hinweise:
  1. Dies sind die empfohlenen CKSEL-Einstellungen für verschiedene Frequenzbereiche.
  2. Diese Option sollte nicht für Quarze verwendet werden, sondern nur für Keramikresonatoren.
  3. Falls die Quarzfrequenz die Grenzwerte des Chips (abhängig von UCC) übersteigt, kann die CKDIV8-Fuse programmiert werden, um die interne Frequenz durch 8 zu teilen. Es muss sichergestellt werden, dass der geteilte Takt den Taktgrenzwert des Chips einhält.
Hochlaufzeiten für den Energiespar-Quarzoszillator
Oszillator-Typ,
Spannungsbedingung
Hochlufzeit vom Leistung-weg und Leistung-spar-Modus Zusätzliche Verzögerung von Reset (UCC = 5.0 V) CKSEL0 SUT[1:0]
Keramikresonator,
schneller Spannungsanstieg
258 Takte 14 Takte + 4,1 ms (1) 0 00
Keramikresonator
langsamer Spannungsanstieg
258 Takte 14 Takte + 65 ms (1) 0 01
Keramikresonator,
Unterspannungsdetektor aktiv
1K Takte 14 Takte (2) 0 10
Keramikresonator,
schneller Spannungsanstieg
1K Takte 14 Takte + 4.1 ms (2) 0 11
Keramikresonator,
langsamer Spannungsanstieg
1K Takte 14 Takte + 65 ms (2) 1 00
Quarzoszillator,
Unterspannungsdetektor aktiv
16K Takte 14 Takte 1 01
Quarzoszillator,
schneller Spannungsanstieg
16K Takte 14 Takte + 4.1 ms 1 10
Quarzoszillator,
langsamer Spannungsanstieg
16K Takte 14 Takte + 65 ms 1 11
Hinweise:
  1. These options should only be used when not operating close to the maximum frequency of the device, and only if frequency stability at start-up is not important for the application. These options are not suitable for crystals.
  2. These options are intended for use with ceramic resonators and will ensure frequency stability at start-up. They can also be used with crystals when not operating close to the maximum frequency of the device, and if frequency stability at start-up is not important for the application.

9.4   Normaler Quarzoszillator

Die Pins XTAL1 und XTAL2 sind der Eingang und Ausgang eines invertierenden Verstärkers, der als Oszillator verwendet werden kann. Es können Quarz- oder Keramik- Resonatoren verwendet werden. Mit der CKOPT-Fuse kann zwischen zwei verschiedenen Betriebsarten des Oszillator Verstärkers ausgewählt werden. Wenn die CKOPT-Fuse programmiert ist, dann arbeitet der Oszillator mit einer voll getriebenen Ausgangsschwingung. Dieser Modus ist zu empfehlen, wenn in einer störanfälligen Umgebung gearbeitet wird oder der Ausgang XTAL2 einen weiteren externen Baustein taktet. In diesem Modus ist ein weiter Frequenzbereich möglich.

Wenn die CKOPT-Fuse nicht programmiert ist, dann arbeitet der Oszillator mit einer kleineren Ausgangsschwingung. Dadurch ist auch der Stromverbrauch geringer. Dieser Modus hat einen eingeschränkten Frequenzbereich, außerdem können keine weiteren externen Bausteine getaktet werden.

Anschluss des Quarzoszillators

Für alle Resonatoren gilt als maximale Frequenz 8 MHz bei unprogrammierter CKOPT-Fuse und 16 MHz bei programmierter CKOPT-Fuse. Die Kondensatoren C1 und C2 sollten immer gleich groß sein, unabhängig davon, welcher Typ von Resonator verwendet wird. Der optimale Wert für die Kondensatoren hängt von dem verwendeten Resonator, den Streukapazitäten und den elektromagnetischen Einflüssen der Umgebung ab. Einige Richtwerte für die Größe der Kondensatoren bei der Verwendung von Quarzen sind in nachfolgender Tabelle angegeben. Bei keramischen Resonatoren können die empfohlenen Kapazitätswerte der jeweiligen Hersteller herangezogen werden. Bei dreipoligen Resonatoren sind diese häufig bereits eingebaut.

Der Oszillator kann in drei verschiedenen Modi betrieben werden, die jeweils für bestimmte Frequenzbereiche optimiert sind. Der Arbeitsmodus wird mit den Fuses CKSEL3 bis CKSEL1 eingestellt.

Arbeitsmodi mit Quarzen
CKOPT CKSEL3 .. 1 Frequenzbereich (MHz) Empfohlene Werte für C1 und C2 bei Quarzen
1 101(1) 0,4 — 0,9 -
1 110 0,9 — 3,0 12 pF — 22 pF
1 111 3,0 — 8,0 12 pF — 22 pF
0 101, 110, 1111,0 ≤ 12 pF — 22 pF
Hinweis:
  1. Diese Option sollte nicht bei Quarzen verwendet werden, nur bei keramischen Resonatoren.

Die CKSEL0-Fuse bestimmt zusammen mit den SUT1- und SUT0-Fuses die Start-Up Zeit wie in nachfolgender Tabelle angegeben.

CKSEL0 SUT1 .. 0 Start-up Zeit von Power-down und Power-save Zusätzliche Verzögerung von Reset (VCC=5,0V) Empfohlene Verwendung
0 00 258 CK (1) 4,1 ms Keramikresonator, schneller Spannungsanstieg
0 01 258 CK (1) 65 ms Keramikresonator, langsamer Spannungsanstieg
0 10 1k CK (2) - Keramikresonator, BOD freigegeben
0 11 1k CK (2) 4,1 ms Keramikresonator, schneller Spannungsanstieg
1 00 1k CK (2) 65 ms Keramikresonator, langsamer Spannungsanstieg
1 01 16k CK - Quarz, BOD freigegeben
1 10 16k CK 4,1 ms Quarz, schneller Spannungsanstieg
1 11 16k CK 65 ms Quarz, langsamer Spannungsanstieg
Hinweise:
  1. Diese Optionen sollten nur verwendet werden, wenn der Baustein nicht in der Nähe seiner maximalen Frequenz betrieben wird und beim Starten noch keine große Frequenzstabilität für die Applikation erforderlich ist. Diese Option ist auch nicht für Quarze geeigent.
  2. Diese Optionen sind für die Verwendung von keramischen Resonatoren gedacht und stellen eine hohe Frequenzstabilität beim Starten sicher. Sie können auch mit Quarzen verwendet werden, wenn der Baustein nicht in der Nähe seiner maximalen Frequenz betrieben wird und beim Starten noch keine große Frequenzstabilität für die Applikation erforderlich ist.

9.5   Tieffrequenz-Quarzoszillator

Wenn ein 32.768-kHz-Uhrenquarz als Taktquelle für den Baustein verwendet wird, dann muss der Quarzoszillator für kleine Frequenzen durch Setzen der CKSEL-Fuses auf „1001“ ausgewählt werden. Der Quarz kann wie in obigem Abbild angeschlossen werden. Durch Programmieren der CKOPT-Fuses können interne Kapazitäten mit einem Wert von 36pF an XTAL1 und XTAL2 geschaltet werden, wodurch das Anschalten der externen Kapazitäten entfällt.

Wenn dieser Oszillator verwendet wird, ergibt sich die Hochlaufzeit durch die Programmierung der SUT-Fuses wie in nachfolgender Tabelle aufgeführt.

SUT1 .. 0 Hochlaufzeit von Leistung-weg und Leistung-sparen Zusätzliche Verzögerung von Reset (VCC=5,0V) Empfohlene Verwendung
00 1k CK (1) 4,1 ms Schneller Spannungsanstieg oder BOD freigegeben
01 1k CK (1) 65 ms Langsamer Spannungsanstieg
10 32k CK 65 ms Stabile Frequenz beim Hochlauf
11 Reserviert
Hinweis:
  1. Diese Option sollte nur gewählt werden, wenn die Applikation keine hohe Frequenzstabilität beim Einschalten erfordert.

9.6   Kalibrierter interner RC-Oszillator

Der interne RC-Oszillator bietet eine feste Frequenz von 8 MHz. Alle nominellen Frequenzen beziehen sich auf 5 V und 25 °C. Die CKOPT-Fuse bleibt bei der Verwendung des internen RC-Oszillators immer unprogrammiert. Während eines Resets lädt die Hardware ein Werkskalibrierungs-Byte in das OSCCAL-Register, wodurch der Oszillator automatisch kalibriert wird. Bei 5 V und 25 °C kann durch das Kalibrieren eine Frequenz mit einer Abweichung von ±1 % erreicht werden. Auch wenn der interne RC-Oszillator als Taktquelle verwendet wird, wird der Watchdog-Oszillator weiterhin für den Watchdog-Timer und für den Reset-Time-out verwendet. Siehe auch Kalibrierungs-Byte.

Wird zudem der Zeitgeber2-Oszillator verwendet, kann mit diesem der RC-Oszillator mit einer PLL in Software auf die gewünschte Frequenz quarzgenau gezogen und gehalten werden.

Arbeitsmodi mit dem internen RC-Oszillator
CKSEL 3 … 0 Frequenzbereich in MHz
0010 (1) 7,3 .. 8,1
Hinweis:
  1. Der Baustein wird mit dieser Einstellung ausgeliefert.

Die Hochlaufzeit ergibt sich durch die Programmierung der SUT-Fuses wie in nachfolgender Tabelle aufgeführt. Die Anschlusspins PB6 (XTAL1/TOSC1) und PB7 (XTAL2/TOSC2) können dann als normale I/O-Pins oder als Zeitgeber-Oszillator-Pins verwendet werden.

Hochlaufzeiten für internen RC-Oszillator
SUT1 .. 0 Hochlaufzeit von Leistung-weg und Leistung-sparen Zusätzliche Verzögerung von Reset (UCC = 5,0 V) Empfohlene Verwendung
00 6 CK 14 CK (1) BOD freigegeben
01 6 CK 14 CK + 4,1 ms Schneller Spannungsanstieg
10 (2) 6 CK 14 CK + 65 ms Langsamer Spannungsanstieg
11 Reserviert
Hinweise:
  1. Bei programmierter RSTDISBL-Fuse erhöht sich die Hochlaufzeit auf 14 CK + 4,1 ms, um sicherzustellen, dass der Programmiermodus erreicht werden kann.
  2. Der Baustein wird mit dieser Einstellung ausgeliefert.

9.7   Interner 128-kHz-Oszillator

Dieser Oszillator liefert einen 128-kHz-Takt bei minimalem Energiebedarf. Die nominelle Frequenz gilt für 3 V und 25 °C. Die Auswahl dieses Oszillators erfolgt durch Setzen der CKSEL-Fuses auf „0011“.

Arbeitsmodi
CKSEL3 … 0 Nominelle Frequenz (1)
0011 128 kHz
Hinweis:
  1. Dieser 128-kHz-Oszillator ist auf geringe Leistungsaufnahme und nicht auf Präzision optimiert.

Wenn dieser Oszillator verwendet wird, ergibt sich die Hochlaufzeit durch die Programmierung der SUT-Fuses wie in nachfolgender Tabelle aufgeführt.

Hochlaufzeiten für internen RC-Oszillator
SUT1 .. 0 Start-up Zeit von Power-down und Power-save Zusätzliche Verzögerung von Reset (VCC=5,0V) Empfohlene Verwendung
00 6 CK 14 CK 1 BOD freigegeben
01 6 CK 14 CK + 4,1 ms Schneller Spannungsanstieg
10 6 CK 14 CK + 64 ms Langsamer Spannungsanstieg
11 reserviert
Hinweis:
  1. Bei programmierter RSTDISBL-Fuse erhöht sich die Hochlaufzeit auf 14 CK + 4,1 ms, um sicherzustellen, dass der Programmiermodus erreicht werden kann.

9.8   Externe Taktspeisung

Wenn der Chip von einer externen Quelle getaktet werden soll, so ist diese wie nachfolgend abgebildet an das Pin XTAL1 anzuschließen, die CKSEL-Fuses sind mit „0000“ zu programmieren.

Frequenzbereich der externen Taktspeisung
CKSEL3..0Frequenz
00000 - 20 MHz
Anschluss der externen Taktspeisung

Wenn dieser Oszillator verwendet wird, ergibt sich die Hochlaufzeit durch die Programmierung der SUT-Fuses wie in nachfolgender Tabelle aufgeführt.

Hochlaufzeiten für externe Taktspeisung
SUT1 .. 0 Start-up Zeit von Power-down und Power-save Zusätzliche Verzögerung von Reset (VCC=5,0V) Empfohlene Verwendung
00 6 CK 14 CK BOD freigegeben
01 6 CK 14 CK + 4,1 ms Schneller Spannungsanstieg
10 6 CK 14 CK + 65 ms Langsamer Spannungsanstieg
11 Reserviert

Wenn eine externe Taktquelle verwendet wird, so müssen plötzliche Frequenzänderungen unterbunden werden, um ein stabiles Arbeiten der CPU sicherzustellen. Eine Abweichung der Frequenz von mehr als 2% von einem Takt zum nächsten kann zu unvorhersehbaren Verhalten des Bausteins führen. Wenn eine Veränderung der Taktfrequenz vorgenommen werden soll, so muss die CPU währenddessen auf Reset gehalten werden.

9.9   Taktausgabe

Der Chip kann den Systemtakt am Pin CLKO ausgeben. Um den Ausgang zu aktivieren muss die CKOUT-Fuse programmiert werden. Dies ist vorteilhaft um andere Chips synchron mit Takt zu versorgen, zur Kalibrierung mittels Frequenzmesser oder zur Fehlersuche. Sogar während RESET wird der Takt an diesem Pin ausgegeben, weil die normale Portfunktion durch eine Fuse (und nicht durch Programmkode) überschrieben wird. Jede Taktquelle inklusive interne RC-Oszillatoren können als Takt für den Ausgang CLKO genutzt werden. Bei Verwendung des Systemtaktteilers wird der geteilte Takt am Ausgang wirksam.

9.10   Zeitgeber2-Oszillator

Bei diesem Mikrocontroller kann ein Quarz direkt zwischen TOSC1 und TOSC2 angeschlossen werden. Durch Programmieren der CKOPT-Fuse können interne Kondensatoren an die Anschlüsse XTAL1 und XTAL2 geschaltet werden, so dass diese nicht extern angeschlossen werden müssen. Der Oszillator ist für die Verwendung eines 32,768-kHz-Uhrenquarzes optimiert. Das Anlegen einer externen Taktquelle an den Anschluss TOSC1 ist möglich, wenn das Bit EXTCLK in ASSR gesetzt wird.

Dieser Oszillator kann nicht als Systemtaktgenerator dienen! Sondern nur für den Zeitgeber 2 im asynchronen Betrieb. Da die Pins TOSC und XTAL zusammenfallen, kommen für den Systemtakt nur interne RC-Oszillatoren in Frage, entweder 8 MHz oder 128 kHz. Da der Systemtakt mindestens das Vierfache dieser Oszillatorfrequenz sein muss, kommt der 128-kHz-Oszillator nur bei Quarzen mit deutlich weniger als 32 kHz in Frage.

9.11   Systemtakt-Vorteiler

The chip has a system clock prescaler, and the system clock can be divided by setting the ”CLKPR – Clock Prescale Register” on page 377. This feature can be used to decrease the system clock frequency and the power consumption when the requirement for processing power is low. This can be used with all clock source options, and it will affect the clock frequency of the CPU and all synchronous peripherals. clk I/O , clk ADC , clk CPU , and clk FLASH are divided by a factor as shown in Table 29-11 on page 305. When switching between prescaler settings, the System Clock Prescaler ensures that no glitches occurs in the clock system. It also ensures that no intermediate frequency is higher than neither the clock frequency corresponding to the previous setting, nor the clock frequency corresponding to the new setting. The ripple counter that implements the prescaler runs at the frequency of the undivided clock, which may be faster than the CPU's clock frequency. Hence, it is not possible to determine the state of the prescaler - even if it were readable, and the exact time it takes to switch from one clock division to the other cannot be exactly predicted. From the time the CLKPS values are written, it takes between T1 + T2 and T1 + 2 * T2 before the new clock frequency is active. In this interval, 2 active clock edges are produced. Here, T1 is the previous clock period, and T2 is the period corresponding to the new prescaler setting. To avoid unintentional changes of clock frequency, a special write procedure must be followed to change the CLKPS bits:
  1. Write the Clock Prescaler Change Enable (CLKPCE) bit to one and all other bits in CLKPR to zero.
  2. Within four cycles, write the desired value to CLKPS while writing a zero to CLKPCE.
Interrupts must be disabled when changing prescaler setting to make sure the write procedure is not interrupted.

9.12   Register-Beschreibung

9.12.1   OSCCAL — Oszillator-Kalibrierung

Bit76543210
(0x66)CAL7CAL6CAL5CAL4CAL3CAL2CAL1CAL0OSCCAL
ZugriffR/WR/WR/WR/WR/WR/WR/WR/W
StartwertEinzelchip-spezifischer Kalibrierwert

Indem das Kalibrierungs-Byte in das Register geschrieben wird, wird die Frequenz des internen Oszillators justiert, um dadurch die durch die Herstellung bedingt Ungenauigkeiten auszugleichen. Während eines Resets wird der Kalibrierungswert für die Frequenz von 1MHz, der im High-Byte der Signatur-Reihe (Adresse 00) hinterlegt ist, automatisch geladen und in das OSCCAL-Register geschrieben. Auch die Kalibrierungswerte für die Frequenzen von 2, 4, und 8 MHz sind in der Signaturreihe abgelegt. Soll der interne RC-Oszillator mit einer dieser Frequenz betrieben werden, so muss das Kalibrierungsbyte manuell geladen werden. Dies kann dadurch geschehen, indem man zunächst das Kalibrierungsbyte mit dem AVR-Studio ausliest und den Wert im Programm- oder EEPROM-Speicher hinterlegt. Die Software muss dann diesen Wert abholen und in das OSCCAL-Register schreiben.

Wenn das OSCCAL auf 00h steht, ist die niedrigste Frequenz ausgewählt. Werte größer als Null erhöhen die Frequenz des internen Oszillators, bei FFh ist die maximale Frequenz erreicht. Wenn die Applikationssoftware das EEPROM oder den Flash-Speicher beschreibt, sollte die eingestellte Frequenz nicht mehr als 10% über ihrem nominalen Wert liegen. Andernfalls können Fehler beim Schreiben des EEPROM oder Flash auftreten. Man sollte beachten, dass der Oszillator nur für das Kalibrieren auf 1, 2, 4 oder 8 MHz vorgesehen ist. Das Justieren anderer Werte ist nicht garantiert, so wie in nachfolgender Tabelle angegeben.

OSCCAL Wert Min Frequenz in Prozent der nominalen Frequenz (%) Max Frequenz in Prozent der nominalen Frequenz (%)
00h 50 100
7Fh 75 150
FFh 100 200

9.12.2   CLKPR — Taktvorteiler

Bit76543210
(0x61)CLKPCE---CLKPS3CLKPS2CLKPS1CLKPS0GLKPR
ZugriffR/W!RRRR/WR/WR/WR/W
Startwert000000CKDIV8CKDIV8
• Bit 7 – CLKPCE: Clock Prescaler Change Enable
The CLKPCE bit must be written to logic one to enable change of the CLKPS bits. The CLKPCE bit is only updated when the other bits in CLKPR are simultaneously written to zero. CLKPCE is cleared by hardware four cycles after it is written or when CLKPS bits are written. Rewriting the CLKPCE bit within this time-out period does neither extend the time-out period, nor clear the CLKPCE bit.
• Bits 3:0 – CLKPS[3:0]: Clock Prescaler Select Bits 3 - 0
These bits define the division factor between the selected clock source and the internal system clock. These bits can be written run-time to vary the clock frequency to suit the application requirements. As the divider divides the master clock input to the MCU, the speed of all synchronous peripherals is reduced when a division factor is used. The division factors are given in Table 9-17 on page 38. The CKDIV8 Fuse determines the initial value of the CLKPS bits. If CKDIV8 is unprogrammed, the CLKPS bits will be reset to “0000”. If CKDIV8 is programmed, CLKPS bits are reset to “0011”, giving a division factor of 8 at start up. This feature should be used if the selected clock source has a higher frequency than the maximum frequency of the device at the present operating conditions. Note that any value can be written to the CLKPS bits regardless of the CKDIV8 Fuse setting. The Application software must ensure that a sufficient division factor is chosen if the selected clock source has a higher frequency than the maximum frequency of the device at the present operating conditions. The device is shipped with the CKDIV8 Fuse programmed.
Taktvorteiler-Auswahl
CLKPS3..0Teilerfaktor
0000 (0x00) 1
0001 (0x01) 2
0010 (0x02) 4
0011 (0x03) 8
0100 (0x04) 16
0101 (0x05) 32
0110 (0x06) 64
0111 (0x07) 128
1000 (0x08) 256
1001 (0x09) reserviert
1010 (0x0A)
1011 (0x0B)
1100 (0x0C)
1101 (0x0D)
1110 (0x0E)
1111 (0x0F)