C8051F80x-83x
234
Rev. 1.0
29.3.5.2. 9-bit through 15-bit Pulse Width Modulator Mode
The duty cycle of the PWM output signal in N-bit PWM mode (N=9 through 15) should be varied by writing
to an “Auto-Reload” Register, which is dual-mapped into the PCA0CPHn and PCA0CPLn register loca-
tions. The data written to define the duty cycle should be right-justified in the registers. The auto-reload
registers are accessed (read or written) when the bit ARSEL in PCA0PWM is set to 1. The capture/com-
pare registers are accessed when ARSEL is set to 0.
When the least-significant N bits of the PCA0 counter match the value in the associated module’s cap-
ture/compare register (PCA0CPn), the output on CEXn is asserted high. When the counter overflows from
the Nth bit, CEXn is asserted low (see
Figure 29.9). Upon an overflow from the Nth bit, the COVF flag is
set, and the value stored in the module’s auto-reload register is loaded into the capture/compare register.
The value of N is determined by the CLSEL bits in register PCA0PWM. This synchronous update feature
allows software to asynchronously write a new PWM high time, which will then take effect on the following
PWM period.
The 9, 10, 11, 12, 13, 14, or 15-bit PWM mode is selected by setting the ECOMn and PWMn bits in the
PCA0CPMn register, and setting the CLSEL bits in register PCA0PWM to the desired cycle length (other
than 8-bits). If the MATn bit is set to 1, the CCFn flag for the module will be set each time a comparator
match (rising edge) occurs. The COVF flag in PCA0PWM can be used to detect the overflow (falling edge),
which will occur every 512 (9-bit), 1024 (10-bit), 2048 (11-bit), 4096 (12-bit), 8192 (13-bit), 16384 (14-bit),
or 32768 (15-bit) PCA clock cycles. The duty cycle for n-Bit PWM Mode (n=9 through 15) is given in
Equation 29.2, where N is the number of bits in the PWM cycle. A 0% duty cycle may be generated by
clearing the ECOMn bit to 0.
Important Note About PCA0CPHn and PCA0CPLn Registers: When writing a 16-bit value to the
PCA0CPn 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.3. N-Bit PWM Duty Cycle (N=9 through 15)
Figure 29.9. PCA 9-bit through 15-Bit PWM Mode Diagram
Duty Cycle
2N
PCA0CPn
–
2N
--------------------------------------------
=
N-bit Comparator
PCA0H:L
(Capture/Compare)
PCA0CPH:Ln
(right-justified)
(Auto-Reload)
PCA0CPH:Ln
(right-justified)
CEXn
Crossbar
Port I/O
Enable
Overflow of N
th Bit
PCA Timebase
00 x 0
x
Q
SET
CLR
S
R
PCA0CPMn
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
0
ENB
0
1
Write to
PCA0CPLn
Write to
PCA0CPHn
Reset
R/W when
ARSEL = 1
R/W when
ARSEL = 0
PCA0PWM
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
Set “N” bits:
001 = 9 bits
010 = 10 bits
011 = 11 bits
100 = 12 bits
101 = 13 bits
110 = 14 bits
111 = 15 bits
x
Match