El PWM consisteix en definir una freqüència de treball a la que a l'inici d'un període comença un pols (s'activa la sortida). Segons el percentatge de temps que està actiu el pols la sortida està activa més o menys temps i, per tant, la sortida té un valor mig de tensió elèctrica diferent.

El PIC 18F45K20 té dos registres PWM. Aquests dos registres poden funcionar en diferents modes de captura, comparació i sortida PWM.
El registre CCP1 pot funcionar com a PWM en mode millorat. En aquest mode pot controlar quatre sortides en configuracions típiques de convertidors. Per al PWM millorat es fa servir el Timer 2 per controlar el temps. Aquest és un temporitzador de 8 bits.
El Timer 2 té un registre anomenat PR2 que permet especificar fins a quin valor compta el Timer 2. Si, per exemple, posem un 5 a PR2 tindrem que aquest temporitzador comptarà: 0, 1, 2, 3, 4, 5, 0, 1, etc. Combinant el prescalat del Timer 2 (1, 4 o 16) amb la possibilitat de triar el valor de comptatge ens permet generar un PWM de la freqüència desitjada.
La generació del tON es pot controlar amb una resolució de 10 bits malgrat el Timer 2 sigui de 8 bits. Per definir el valor cal aplicar el percentatge desitjat sobre el valor de PR2 multiplicat per 4. El resultat d'això es guarda posant els 8 bits de més pes al registre CCPR1L i els altres dos bits a DC1B1 i DC1B0 al registre CCP1CON.
Si no es necessita la resolució de 10 bits, es poden mantenir DC1B1 i DC1B0 a zero i posar el percentatge del valor de PR2 al registre CCPR1L.
Per a una informació completa del PWM millorat, consulteu l'apartat 16 del document de característiques del PIC 18F45K20. Per a una informació completa del PWM normal consulteu l'apartat 11 del mateix document i per a la descripció del Timer 2, consulteu l'apartat 14.

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.