21.5 Counter Unit
The main part of the 16-bit Timer/Counter is the programmable 16-bit bi-directional counter unit, as shown in the block diagram:
Signal Name | Description |
---|---|
Count | Increment or decrement TCNT1 by 1. |
Direction | Select between increment and decrement. |
Clear | Clear TCNT1 (set all bits to zero). |
clkT1 | Timer/Counter clock. |
TOP | Signalize that TCNT1 has reached maximum value. |
BOTTOM | Signalize that TCNT1 has reached minimum value (zero). |
Depending on the selected mode of operation, the counter is cleared, incremented, or decremented at each timer clock (clkT1). The clock clkT1 can be generated from an external or internal clock source, as selected by the Clock Select bits in the Timer/Counter1 Control Register B (TCCR1B.CS[2:0]). When no clock source is selected (CS[2:0]=0x0) the timer is stopped. However, the TCNT1 value can be accessed by the CPU, independent of whether clkT1 is present or not. A CPU write overrides (i.e., has priority over) all counter clear or count operations.
The counting sequence is determined by the setting of the Waveform Generation mode bits in the Timer/Counter Control Registers A and B (TCCR1B.WGM1[3:2] and TCCR1A.WGM1[1:0]). There are close connections between how the counter behaves (counts) and how waveforms are generated on the Output Compare outputs OC0x. For more details about advanced counting sequences and waveform generation, see Modes of Operation.
The Timer/Counter Overflow Flag in the TC1 Interrupt Flag Register (TIFR1.TOV) is set according to the mode of operation selected by the WGM1[3:0] bits. TOV can be used for generating a CPU interrupt.