Normal mode, Clear timer on compare match (ctc) mode, Atmega32(l) – Rainbow Electronics ATmega32L User Manual

Page 72

Advertising
background image

72

ATmega32(L)

2503C–AVR–10/02

Normal Mode

The simplest mode of operation is the normal mode (WGM01:0 = 0). In this mode the
counting direction is always up (incrementing), and no counter clear is performed. The
counter simply overruns when it passes its maximum 8-bit value (TOP = 0xFF) and then
restarts from the bottom (0x00). In normal operation the Timer/Counter Overflow Flag
(

TOV

0) will be set in the same timer clock cycle as the TCNT0 becomes zero. The

TOV

0

flag in this case behaves like a ninth bit, except that it is only set, not cleared. However,
combined with the timer overflow interrupt that automatically clears the

TOV

0 flag, the

timer resolution can be increased by software. There are no special cases to consider in
the normal mode, a new counter value can be written anytime.

The output compare unit can be used to generate interrupts at some given time. Using
the output compare to generate waveforms in Normal mode is not recommended, since
this will occupy too much of the CPU time.

Clear Timer on Compare
Match (CTC) Mode

In Clear Timer on Compare or CTC mode (WGM01:0 = 2), the OCR0 Register is used to
manipulate the counter resolution. In CTC mode the counter is cleared to zero when the
counter value (TCNT0) matches the OCR0. The OCR0 defines the top value for the
counter, hence also its resolution. This mode allows greater control of the compare
match output frequency. It also simplifies the operation of counting external events.

The timing diagram for the CTC mode is shown in Figure 31. The counter value
(TCNT0) increases until a compare match occurs between TCNT0 and OCR0, and then
counter (TCNT0) is cleared.

Figure 31. CTC Mode, Timing Diagram

An interrupt can be generated each time the counter value reaches the TOP value by
using the OCF0 flag. If the interrupt is enabled, the interrupt handler routine can be used
for updating the TOP value. However, changing TOP to a value close to BOTTOM when
the counter is running with none or a low prescaler value must be done with care since
the CTC mode does not have the double buffering feature. If the new value written to
OCR0 is lower than the current value of TCNT0, the counter will miss the compare
match. The counter will then have to count to its maximum value (0xFF) and wrap
around starting at 0x00 before the compare match can occur.

For generating a waveform output in CTC mode, the OC0 output can be set to toggle its
logical level on each compare match by setting the Compare Output mode bits to toggle
mode (COM01:0 = 1). The OC0 value will not be visible on the port pin unless the data
direction for the pin is set to output. The waveform generated will have a maximum fre-

TCNTn

OCn
(Toggle)

OCn Interrupt Flag Set

1

4

Period

2

3

(COMn1:0 = 1)

Advertising