SN8P2711A
8-Bit Micro-Controller
SONiX TECHNOLOGY CO., LTD
Page 87
Version 0.1
8.2.5 TC0R AUTO-LOAD REGISTER
TC0 timer is with auto-load function controlled by ALOAD0 bit of TC0M. When TC0C overflow occurring, TC0R value
will load to TC0C by system. It is easy to generate an accurate time, and users don’t reset TC0C during interrupt
service routine.
TC0 is double buffer design. If new TC0R value is set by program, the new value is stored in 1
st
buffer. Until TC0
overflow occurs, the new value moves to real TC0R buffer. This way can avoid TC0 interval time error and glitch in
PWM and Buzzer output.
Note: Under PWM mode, auto-load is enabled automatically. The ALOAD0 bit is selecting overflow
boundary.
0CDH
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
TC0R
TC0R7 TC0R6 TC0R5 TC0R4 TC0R3 TC0R2 TC0R1 TC0R0
Read/Write
W W W W W W W W
After
reset
0 0 0 0 0 0 0 0
The equation of TC0R initial value is as following.
TC0R initial value = N - (TC0 interrupt interval time * input clock)
N is TC0 overflow boundary number. TC0 timer overflow time has six types (TC0 timer, TC0 event counter, TC0 Fcpu
clock source, TC0 Fosc clock source, PWM mode and no PWM mode). These parameters decide TC0 overflow time
and valid value as follow table.
TC0CKS TC0X8 PWM0
ALOAD0 TC0OUT
N
TC0R valid
value
TC0R value
binary type
0 x x 256
0x00~0xFF
00000000b~11111111b
1 0 0 256
0x00~0xFF
00000000b~11111111b
1 0 1 64
0x00~0x3F
xx000000b~xx111111b
1 1 0 32
0x00~0x1F
xxx00000b~xxx11111b
0
(Fcpu/2~
Fcpu/256)
1 1 1 16
0x00~0x0F
xxxx0000b~xxxx1111b
0 x x 256
0x00~0xFF
00000000b~11111111b
1 0 0 256
0x00~0xFF
00000000b~11111111b
1 0 1 64
0x00~0x3F
xx000000b~xx111111b
1 1 0 32
0x00~0x1F
xxx00000b~xxx11111b
0
1
(Fosc/1~
Fosc/128)
1 1 1 16
0x00~0x0F
xxxx0000b~xxxx1111b
1 - -
- - 256
0x00~0xFF
00000000b~11111111b
¾
Example: To set 10ms interval time for TC0 interrupt. TC0 clock source is Fcpu (TC0KS=0, TC0X8=0) and
no PWM output (PWM0=0). High clock is external 4MHz. Fcpu=Fosc/4. Select TC0RATE=010 (Fcpu/64).
TC0R initial value = N - (TC0 interrupt interval time * input clock)
= 256 - (10ms * 4MHz / 4 / 64)
= 256 - (10
-2
* 4 * 10
6
/ 4 / 64)
= 100
= 64H