Datasheet

20.7. Output Compare Units
The 16-bit comparator continuously compares TCNTn with the Output Compare Register (OCRnx). If
TCNT equals OCRnx the comparator signals a match. A match will set the Output Compare Flag
(OCFnx) at the next timer clock cycle. If enabled (OCIEnx = 1), the Output Compare Flag generates an
Output Compare interrupt. The OCFnx Flag is automatically cleared when the interrupt is executed.
Alternatively the OCFnx Flag can be cleared by software by writing a logical one to its I/O bit location. The
waveform generator uses the match signal to generate an output according to operating mode set by the
Waveform Generation mode (WGMn3:0) bits and Compare Output mode (COMnx1:0) bits. The TOP and
BOTTOM signals are used by the waveform generator for handling the special cases of the extreme
values in some modes of operation (Refer to Modes of Operation on page 148.)
A special feature of Output Compare unit A allows it to define the Timer/Counter TOP value (i.e. counter
resolution). In addition to the counter resolution, the TOP value defines the period time for waveforms
generated by the waveform generator.
The figure below shows a block diagram of the Output Compare unit. The small “n” in the register and bit
names indicates the device number (n = n for Timer/Counter n), and the “x” indicates Output Compare
unit (A/B/C). The elements of the block diagram that are not directly a part of the Output Compare unit are
gray shaded.
Figure 20-4 Output Compare Unit, Block Diagram
OCFnx (Int.Req.)
= (16-bit Comparator )
OCRnx Buffer (16-bit Register)
OCRnxH Buf. (8-bit)
OCnx
TEMP (8-bit)
DATA BUS (8-bit)
OCRnxL Buf. (8-bit)
TCNTn (16-bit Counter)
TCNTnH (8-bit) TCNTnL (8-bit)
COMnx1:0WGMn3:0
OCRnx (16-bit Register)
OCRnxH (8-bit) OCRnxL (8-bit)
Waveform Generator
TOP
BOTTOM
The OCRnx Register is double buffered when using any of the twelve Pulse Width Modulation (PWM)
modes. For the normal and Clear Timer on Compare (CTC) modes of operation, the double buffering is
disabled. The double buffering synchronizes the update of the OCRnx Compare Register to either TOP or
BOTTOM of the counting sequence. The synchronization prevents the occurrence of odd-length, non-
symmetrical PWM pulses, thereby making the output glitch-free.
The OCRnx Register access may seem complex, but this is not case. When the double buffering is
enabled, the CPU has access to the OCRnx Buffer Register, and if double buffering is disabled the CPU
Atmel ATmega64A [DATASHEET]
Atmel-8160E-ATmega64A_Datasheet_Complete-09/2015
146