ATmega48/88/168
8-bit Timer/Counter0 Timer/Counter0 is a general purpose 8-bit Timer/Counter module, with two independent
Output Compare Units, and with PWM support. It allows accurate program execution
timing (event management) and wave generation. The main features are:
• Two Independent Output Compare Units
with PWM
• Double Buffered Output Compare Registers
• Clear Timer on Compare Match (Auto Reload)
• Glitch Free, Phase Correct Pulse Width Modulator (PWM)
• Variable PWM Period
• Frequency Generator
• Three Independent Interrupt Sources (TOV0, OCF0A, and OCF0B)
Overview
A simplified block diagram of the 8-bit Timer/Counter is shown in Figure 28. For the
actual placement of I/O pins, refer to “Pinout ATmega48/88/168” on page 2. CPU acces-
sible I/O Registers, including I/O bits and I/O pins, are shown in bold. The device-
specific I/O Register and bit locations are listed in the “8-bit Timer/Counter Register
Description” on page 95.
The PRTIM0 bit in “Power Reduction Register - PRR” on page 37 must be written to
zero to enable Timer/Counter0 module.
Figure 28. 8-bit Timer/Counter Block Diagram
Count
TOVn
(Int.Req.)
Clear
Control Logic
Direction
clkTn
TOSC1
TOSC2
T/C
Oscillator
Prescaler
TOP
BOTTOM
clkI/O
Timer/Counter
TCNTn
=
=
0
OCnA
(Int.Req.)
Waveform
Generation
OCnA
OCnB
=
OCRnA
Fixed
TOP
Value
OCnB
(Int.Req.)
Waveform
Generation
=
OCRnB
TCCRnA
TCCRnB
Definitions
Many register and bit references in this section are written in general form. A lower case
“n” replaces the Timer/Counter number, in this case 0. A lower case “x” replaces the
Output Compare Unit, in this case Compare Unit A or Compare Unit B. However, when
using the register or bit defines in a program, the precise form must be used, i.e.,
TCNT0 for accessing Timer/Counter0 counter value and so on.
The definitions in Table 44 are also used extensively throughout the document.
85
2545D–AVR–07/04