Rev. 1.0
235
C8051F80x-83x
29.3.6. 16-Bit Pulse Width Modulator Mode
A PCA module may be operated in 16-Bit PWM mode. 16-bit PWM mode is independent of the other (8-bit
through 15-bit) PWM modes. In this mode, the 16-bit capture/compare module defines the number of PCA
clocks for the low time of the PWM signal. When the PCA counter matches the module contents, the out-
put on CEXn is asserted high; when the 16-bit counter overflows, CEXn is asserted low. 16-Bit PWM Mode
is enabled by setting the ECOMn, PWMn, and PWM16n bits in the PCA0CPMn register.
The duty cycle of the PWM output signal can be varied by writing to an “Auto-Reload” Register, which is
dual-mapped into the PCA0CPHn and PCA0CPLn register locations. The auto-reload registers are
accessed (read or written) when the bit ARSEL in PCA0PWM is set to 1. The capture/compare registers
are accessed when ARSEL is set to 0. This synchronous update feature allows software to asynchro-
nously write a new PWM high time, which will then take effect on the following PWM period.
For backwards-compatibility with the 16-bit PWM mode available on other devices, the PWM duty cycle
can also be changed without using the “Auto-Reload” register. To output a varying duty cycle without using
the “Auto-Reload” register, new value writes should be synchronized with PCA CCFn match interrupts.
Match interrupts should be enabled (ECCFn = 1 AND MATn = 1) to help synchronize the capture/compare
register writes. If the MATn bit is set to 1, the CCFn flag for the module will be set each time a 16-bit com-
parator match (rising edge) occurs. The CF flag in PCA0CN can be used to detect the overflow (falling
edge). The duty cycle for 16-Bit PWM Mode is given by
Equation 29.4.
Important Note About Capture/Compare Registers: When writing a 16-bit value to the PCA0 Cap-
ture/Compare registers, the low byte should always be written first. Writing to PCA0CPLn clears the
ECOMn bit to 0; writing to PCA0CPHn sets ECOMn to 1.
Equation 29.4. 16-Bit PWM Duty Cycle
Using
Equation 29.4, the largest duty cycle is 100% (PCA0CPn = 0), and the smallest duty cycle is
0.0015% (PCA0CPn = 0xFFFF). A 0% duty cycle may be generated by clearing the ECOMn bit to 0.
Figure 29.10. PCA 16-Bit PWM Mode
Duty Cycle
65536
PCA0CPn
–
65536
-----------------------------------------------------
=
16-bit C o m parator
PCA0H :L
(A uto -R eload )
PCA0 C P H:L n
CE X n
C rossbar
Po rt I/O
E nable
O verflow
PC A T im ebase
00 x 0
x
Q
SET
CL R
S
R
PC A 0 CPM n
P
W
M
1
6
n
E
C
O
M
n
E
C
F
n
T
O
G
n
P
W
M
n
C
A
P
n
C
A
P
N
n
M
A
T
n
1
P C A0 PW M
A
R
S
E
L
E
C
O
V
C
L
S
E
L
0
C
L
S
E
L
2
C
L
S
E
L
1
C
O
V
F
E
A
R
1
6
x
EN B
0
1
Write to
PC A0C P Ln
Write to
P C A0CP Hn
Reset
R/W w hen
AR SEL = 1
R/W w hen
AR SEL = 0
(C apture/C om pare )
PCA0 C P H:L n
Match
xxx