Datasheet

PICkit™ 3 Debug Express
DS41370C-page 70 © 2009 Microchip Technology Inc.
FIGURE 3-60: SIMPLIFIED PWM BLOCK DIAGRAM
Now that the frequency has been determined, it is necessary to set up the CCP1
module for PWM using the CCP1CON register. Bits CCP1Mx determine the module
mode; there is only one value to select for PWM, CCP1Mx = 0b11xx where the ‘x’ bits
are “don’t care”, so 0b1100 will work. The two DC1Bx bits in CCP1CON are the 2 Least
Significant bits of the 10-bit PWM duty cycle value. The 8 Most Significant of the 10 bits
are written to CCPR1L.
The duty cycle value is determined by the duty cycle percentage (DC%) times the 10-bit
time base (PR2 * 4). DCValue = DC% * (PR2 * 4). For example, to get a duty cycle of
50%, the value would be 50% * (250 * 4) = 500. 500 decimal is 0x1F4 hex or 0b01 1111
0100 binary. The 8 Most Significant bits, 0b01 1111 01 or 0x7D, are written to CCPR1L,
and the 2 LSbs are written to the DC1B1 and DC1B0 bits in CCP1CON.