
Rev. 1.40
64
March 29, 2019
Rev. 1.40
65
March 29, 2019
HT45F23A/HT45F24A
TinyPower
TM
Flash MCU with OPA & Comparators
HT45F23A/HT45F24A
TinyPower
TM
Flash MCU with OPA & Comparators
Timer/Event Counters
The provision of timers form an important part of any microcontroller, giving the designer a means
of carrying out time related functions. The devices contain one 8-bit and one 16-bit count-up timer
respectively. As each timer has four different operating modes, they can be configured to operate
as a general timer, an external event counter, an internal event counter for comparator, or as a pulse
width measurement device. The provision of a prescaler to the clock circuitry of the 8-bit Timer/
Event Counter also gives added range to this timer.
There are two types of registers related to the Timer/Event Counters. The first are the registers
that contain the actual value of the Timer/Event Counter and into which an initial value can be
preloaded. Reading from these registers retrieves the contents of the Timer/Event Counter. The
second type of associated register is the Timer Control Register which defines the timer options and
determines how the Timer/Event Counter is to be used. The Timer/Event Counters can have the their
clock configured to come from an internal clock source. In addition, their clock source can also be
configured to come from an external timer pin.
Configuring the Timer/Event Counter Input Clock Source
The internal timer’s clock can originate from various sources. The system clock source is used when
the Timer/Event Counter is in the timer mode or in the pulse width measurement mode. For Timer/
Event Counter 0 this internal clock source is f
SYS
which is also divided by a prescaler, the division
ratio of which is conditioned by the Timer Control Register, TMR0C, bits T0PSC0~ T0PSC2. For
Timer/Event Counter 1 this internal clock source can be chosen from a combination of internal
clocks using a configuration option and the T1S bit in the TMR1C register.
An external clock source is used when the timer is in the event counting mode, the clock source
being provided on an external timer pin TC0 or TC1, depending upon which timer is used.
Depending upon the condition of the T0E or T1E bit, each high to low, or low to high transition on
the external timer pin will increment the counter by one.
Timer Registers – TMR0, TMR1L, TMR1H
The timer registers are special function registers located in the Special Purpose Data Memory and
is the place where the actual timer value is stored. For the 8-bit Timer/Event Counter 0, this register
is known as TMR0. For 16-bit Timer/Event Counter 1, the timer registers are known as TMR1L
and TMR1H. The value in the timer registers increases by one each time an internal clock pulse is
received or an external transition occurs on the external timer pin. The timer will count from the
initial value loaded by the preload register to the full count of FFH for the 8-bit timer or FFFFH for
the 16-bit timer at which point the timer overflows and an internal interrupt signal is generated. The
timer value will then be reset with the initial preload register value and continue counting.
To achieve a maximum full range count of FFH for the 8-bit timer or FFFFH for the 16-bit timer,
the preload registers must first be cleared to all zeros. It should be noted that after power-on, the
preload register will be in an unknown condition. Note that if the Timer/Event Counter is switched
off and data is written to its preload registers, this data will be immediately written into the actual
timer registers. However, if the Timer/Event Counter is enabled and counting, any new data written
into the preload data registers during this period will remain in the preload registers and will only be
written into the timer registers the next time an overflow occurs.