
13.4.6.3
Register buffer configuration
(1)
Temporary buffer
The TMP89FH42 contains an 8-bit temporary buffer. When a write instruction is executed on
TA0DRAL (TA0DRBL), the data is first stored into this temporary buffer, whether the double buffer
is enabled or disabled. Subsequently, when a write instruction is executed on TA0DRAH (TA0DRBH),
the set value is stored into the double buffer or TA0DRAH (TA0DRBH). At the same time, the set value
in the temporary buffer is stored into the double buffer or TA0DRAL (TA0DRBL). (This structure is
designed to enable the set values of the lower-level register and the higher-level register simultaneously.)
Therefore, when setting data to TA0DRA (TA0DRB), be sure to write the data into TA0DRAL and
TA0DRAH (TA0DRBL and TA0DRBH) in this order.
See
Figure 13-1 for the temporary buffer configuration.
(2)
Double buffer
In the TMP89FH42, the double buffer can be used by setting TA0CR<TA0DBF>. Setting
TA0CR<TA0DBF> to "0" disables the double buffer. Setting TA0CR<TA0DBF> to "1" enables the
double buffer.
-
When the double buffer is enabled
When a write instruction is executed on TA0DRAH (TA0DRBH) during the timer operation,
the set value is first stored into the double buffer, and TA0DRAH/L are not updated immedi-
ately. TA0DRAH/L (TA0DRBH/L) compare the last set values to the counter value. If a match
is detected, an INTTCA0 interrupt request is generated and the double buffer set value is stored
into TA0DRAH/L (TA0DRBH/L). Subsequently, the match detection is executed using a new
set value.
When a read instruction is executed on TA0DRAH/L (TA0DRBH/L), the double buffer
value (the last set value) is read, not the TA0DRAH/L (TA0DRBH/L) values (the current
effective values).
When a write instruction is executed on TA0DRAH/L (TA0DRBH/L) while the timer is
stopped, the set value is immediately stored into both the double buffer and TA0DRAH/L
(TA0DRBH/L).
-
When the double buffer is disabled
When a write instruction is executed on TA0DRAH (TA0DRBH) during the timer operation,
the set value is immediately stored in TA0DRAH/L (TA0DRBH/L). Subsequently, the match
detection is executed using a new set value.
If the values set to TA0DRAH/L (TA0DRBH/L) are smaller than the up counter value, the
up counter overflows and the match detection is executed using a new set value. As a result,
the output pulse width may be longer than the set time. If that is a problem, enable the double
buffer.
When a write instruction is executed on TA0DRAH/L (TA0DRBH/L) while the timer is
stopped, the set value is immediately stored into TA0DRAH/L (TA0DRBH/L).
TMP89FH42
Page 171
RB002