
147
7810C–AVR–10/12
Atmel ATmega328P [Preliminary]
Figure 17-10. Timer/Counter Timing Diagram, Setting of OCF2A, with Prescaler (f
clk_I/O/8)
Figure 17-11 shows the setting of OCF2A and the clearing of TCNT2 in CTC mode.
Figure 17-11. Timer/Counter Timing Diagram, Clear Timer on Compare Match mode, with Pres-
caler (f
clk_I/O/8)
17.9
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, OCR2x, and TCCR2x might be corrupted. A safe
procedure for switching clock source is:
a.
Disable the Timer/Counter2 interrupts by clearing OCIE2x and TOIE2.
b.
Select clock source by setting AS2 as appropriate.
c.
Write new values to TCNT2, OCR2x, and TCCR2x.
d.
To switch to asynchronous operation: Wait for TCN2xUB, OCR2xUB, and TCR2xUB.
e.
Clear the Timer/Counter2 Interrupt Flags.
f.
Enable interrupts, if needed.
The CPU main clock frequency must be more than four times the Oscillator frequency.
When writing to one of the registers TCNT2, OCR2x, or TCCR2x, 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 its
destination. Each of the five mentioned registers have their individual temporary register, which
means that e.g. writing to TCNT2 does not disturb an OCR2x write in progress. To detect that a
transfer to the destination register has taken place, the Asynchronous Status Register – ASSR
has been implemented.
When entering Power-save or ADC Noise Reduction mode after having written to TCNT2,
OCR2x, or TCCR2x, the user must wait until the written register has been updated if
OCFnx
OCRnx
TCNTn
OCRnx Value
OCRnx - 1
OCRnx
OCRnx + 1
OCRnx + 2
clk
I/O
clk
Tn
(clk
I/O/8)
OCFnx
OCRnx
TCNTn
(CTC)
TOP
TOP - 1
TOP
BOTTOM
BOTTOM + 1
clk
I/O
clk
Tn
(clk
I/O/8)