beautypg.com

Asynchronous operation of timer/counter2 – Rainbow Electronics AT90LS8535 User Manual

Page 47

background image

47

AT90S/LS8535

1041H–11/01

Asynchronous Operation of
Timer/Counter2

When Timer/Counter2 operates asynchronously, some considerations must be taken.

Warning: When switching between asynchronous and synchronous clocking of
Timer/Counter2, the timer registers TCNT2, OCR2 and TCCR2 might get corrupted.
A safe procedure for switching clock source is:

1.

Disable the Timer/Counter2 interrupts OCIE2 and TOIE2.

2.

Select clock source by setting AS2 as appropriate.

3.

Write new values to TCNT2, OCR2 and TCCR2.

4.

To switch to asynchronous operation: Wait for TCN2UB, OCR2UB and
TCR2UB.

5.

Clear the Timer/Counter2 interrupt flags.

6.

Clear the TOV2 and OCF2 flags in TIFR.

7.

Enable interrupts, if needed.

When writing to one of the registers TCNT2, OCR2 or TCCR2, the value is
transferred to a temporary register and latched after two positive edges on TOSC1.
The user should not write a new value before the contents of the temporary register
have been transferred to their destination. Each of the three mentioned registers
have their individual temporary register. For example, writing to TCNT2 does not
disturb an OCR2 write in progress. To detect that a transfer to the destination
register has taken place, an Asynchronous Status Register (ASSR) has been
implemented.

When entering a Power Save Mode after having written to TCNT2, OCR2 or
TCCR2, the user must wait until the written register has been updated if
Timer/Counter2 is used to wake up the device. Otherwise, the MCU will go to sleep
before the changes have had any effect. This is extremely important if the Output
Compare2 interrupt is used to wake up the device; Output Compare is disabled
during write to OCR2 or TCNT2. If the write cycle is not finished (i.e., the user goes
to sleep before the OCR2UB bit returns to zero), the device will never get a compare
match and the MCU will not wake up.

If Timer/Counter2 is used to wake up the device from Power Save Mode,
precautions must be taken if the user wants to re-enter Power Save Mode: The
interrupt logic needs one TOSC1 cycle to be reset. If the time between wake up and
re-entering Power Save Mode is less than one TOSC1 cycle, the interrupt will not
occur and the device will fail to wake up. If the user is in doubt whether the time
before re-entering Power Save is sufficient, the following algorithm can be used to
ensure that one TOSC1 cycle has elapsed:

1.

Write a value to TCCR2, TCNT2 or OCR2.

2.

Wait until the corresponding Update Busy flag in ASSR returns to zero.

3.

Enter Power Save Mode.

When the asynchronous operation is selected, the 32 kHz oscillator for
Timer/Counter2 is always running, except in Power-down mode. After a power-up
reset or wake-up from power-down, the user should be aware of the fact that this
oscillator might take as long as one second to stabilize. The user is advised to wait
for at least one second before using Timer/Counter2 after power-up or wake-up from
power-down. The content of all Timer/Counter2 registers must be considered lost
after a wake-up from power-down due to the unstable clock signal upon start-up,
regardless of whether the oscillator is in use or a clock signal is applied to the TOSC
pin.

Description of wake-up from Power Save Mode when the timer is clocked
asynchronously: When the interrupt condition is met, the wake-up process is started
on the following cycle of the timer clock, that is, the timer is always advanced by at