23.9 Setup for PWM Operation using PWMx Output Pins

The following steps should be taken when configuring the module for PWM operation using the PWMx pins:

  1. Disable the PWMx pin output driver(s) by setting the associated TRIS bit(s).
  2. Clear the PWMxCON register.
  3. Load the T2PR register with the PWM period value.
  4. Load the PWMxDCH register and bits <7:6> of the PWMxDCL register with the PWM duty cycle value.
  5. Configure and start Timer2:
    • Clear the TMR2IF interrupt flag bit of the PIRx register.(1)
    • Select the timer clock source to be as FOSC/4 using the TxCLKCON register. This is required for correct operation of the PWM module.
    • Configure the T2CKPS bits of the T2CON register with the Timer2 prescale value.
    • Enable Timer2 by setting the T2ON bit of the T2CON register.
  6. Enable PWM output pin and wait until Timer2 overflows, TMR2IF bit of the PIRx register is set.(2)
  7. Enable the PWMx pin output driver(s) by clearing the associated TRIS bit(s) and setting the desired pin PPS control bits.
  8. Configure the PWM module by loading the PWMxCON register with the appropriate values.
Note:
  1. In order to send a complete duty cycle and period on the first PWM output, the above steps must be followed in the order given. If it is not critical to start with a complete PWM signal, then move Step 8 to replace Step 4.
  2. For operation with other peripherals only, disable PWMx pin outputs.