beautypg.com

Timer/counter oscillator, System clock prescaler, Clock prescale register – clkpr – Rainbow Electronics Atmega169L User Manual

Page 30: Atmega169v/l

background image

30

ATmega169V/L

2514A–AVR–08/02

Timer/Counter Oscillator

ATmega169 share the Timer/Counter Oscillator Pins (TOSC1 and TOSC2) with XTAL1
and XTAL2. This means that the Timer/Counter Oscillator can only be used when the
calibrated internal RC Oscillator is selected as system clock source. The Oscillator is
optimized for use with a 32.768 kHz watch crystal. See Figure 12 on page 25 for crystal
connection.

Applying an external clock source to TOSC1 can be done if EXTCLK in the ASSR Reg-
ister is written to logic one. See “Asynchronous operation of the Timer/Counter” on page
137
for futher description on selecting external clock as input instead of a 32 kHz crystal.

System Clock Prescaler

The ATmega169 system clock can be divided by setting the Clock Prescale Register –
CLKPR. This feature can be used to decrease power consumption when the require-
ment 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 13.

Clock Prescale Register –
CLKPR

• 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 simultaniosly 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 – CLKPS3..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 divi-
sion factors are given in Table 13.

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 pro-
cedure is not interrupted.

The CKDIV8 Fuse determines the initial value of the CLKPS bits. If CKDIV8 is unpro-
grammed, 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 selcted clock source has a higher

Bit

7

6

5

4

3

2

1

0

CLKPCE

CLKPS3

CLKPS2

CLKPS1

CLKPS0

CLKPR

Read/Write

R/W

R

R

R

R/W

R/W

R/W

R/W

Initial Value

0

0

0

0

See Bit Description