
PIC18F8722 FAMILY
DS39646B-page 184
Preliminary
 2004 Microchip Technology Inc.
17.4
PWM Mode
In Pulse-Width Modulation (PWM) mode, the CCPx pin
produces up to a 10-bit resolution PWM output. Since
the CCP4 and CCP5 pins are multiplexed with a
PORTG data latch, the appropriate TRISG bit must be
cleared to make the CCP4 or CCP5 pin an output. 
Figure 17-4 shows a simplified block diagram of the
CCP module in PWM mode.
For a step-by-step procedure on how to set up a CCP
module for PWM operation, see 
Section 17.4.3
“Setup for PWM Operation”
.
FIGURE 17-4:
SIMPLIFIED PWM BLOCK 
DIAGRAM        
A PWM output (Figure 17-5) has a time base (period)
and a time that the output stays high (duty cycle).
The frequency of the PWM is the inverse of the
period (1/period).
FIGURE 17-5:
PWM OUTPUT       
17.4.1
PWM PERIOD
The PWM period is specified by writing to the PR2
(PR4) register. The PWM period can be calculated
using the following formula:
EQUATION 17-1:
PWM frequency is defined as 1/[PWM period].
When TMR2 (TMR4) is equal to PR2 (PR4), the
following three events occur on the next increment
cycle:
 TMR2 (TMR4) is cleared
 The CCPx pin is set (exception: if PWM duty 
cycle = 0%, the CCPx pin will not be set)
 The PWM duty cycle is latched from CCPRxL into 
CCPRxH          
Note:
The Timer2 and Timer 4 postscalers (see
Section 14.0 “Timer2 Module”
 and
Section 16.0 “Timer4 Module”
) are not
used in the determination of the PWM
frequency. The postscaler could be used
to have a servo update rate at a different
frequency than the PWM output.
17.4.2
PWM DUTY CYCLE
The PWM duty cycle is specified by writing to the
CCPRxL register and to the CCPxCON<5:4> bits. Up
to 10-bit resolution is available. The CCPRxL contains
the eight MSbs and the CCPxCON<5:4> contains the
two LSbs. This 10-bit value is represented by
CCPRxL:CCPxCON<5:4>. The following equation is
used to calculate the PWM duty cycle in time:
EQUATION 17-2:
CCPRxL and CCPxCON<5:4> can be written to at any
time, but the duty cycle value is not latched into
CCPRxH until after a match between PR2 (PR4) and
TMR2 (TMR4) occurs (i.e., the period is complete). In
PWM mode, CCPRxH is a read-only register.
Note:
Clearing the CCP4CON or CCP5CON
register will force the RG3 or RG4 output
latch (depending on device configuration)
to the default low level. This is not the
PORTG I/O data latch.
CCPRxL
CCPRxH (Slave)
Comparator
TMR2 (TMR4)
Comparator
PR2 (PR4)
(Note 1)
R
Q
S
Duty Cycle Registers
CCPxCON<5:4>
Clear Timer,
CCPx pin and
latch D.C.
Note 1:
 The 8-bit TMR2 or TMR4 value is concatenated with 
the 2-bit internal Q clock, or 2 bits of the prescaler, to 
create the 10-bit time base.
CCPx Output
Corresponding
TRIS bit
Period
Duty Cycle
TMR2 (TMR4) = PR2 (TMR4)
TMR2 (TMR4) = Duty Cycle
TMR2 (TMR4) = PR2 (PR4)
PWM Period  = [(PR2) + 1]  4  T
OSC
 
(TMR2 Prescale Value)
PWM Duty Cycle = (CCPR
X
L:CCP
X
CON<5:4>) 
T
OSC
  (TMR2 Prescale Value)