Hola.
El ciclo de trabajo es el tiempo que estará en alto el pulso durante la frecuencia, son cosas diferentes.
Tu frecuencia es de X Hz, y tu ciclo de trabajo varía entre el 0% y el 100%.
Usemos 1 khz de ejemplo:
0% significa que durante esa frecuencia, no saldrá voltaje. Cada 1 khz se repetirá esto.
50% significa que durante la frecuencia, la mitad saldrá voltaje y la otra no (500 Hz con voltaje y 500 sin voltaje). Cada 1 kHz se repite.
100% quiere decir que siempre saldrá voltaje durante TODA la frecuencia.
Si pones 0% o 100% no notarás la diferencia pero, si pones 50% o cualquier otro, si la verás.
Si tienes acceso a un osciloscopio (digital de preferencia) observarás lo que digo.
Si usas el 877, tienes dos canales para PWM.
Revisa el manual de PBP en HPWM y observarás que ya hay una instrucción para hacer esto en hardware.
HPWM canal, ciclo de trabajo, frecuencia.
El manual te dice cuánto es la mínima frecuencia permisible con esta instrucción.
Una desventaja con esto es que deverás llamar a la instrucción cada vez que desees cambiar el ciclo de trabajo para cada canal; recuerda que será la misma frecuencia para los dos canales pero, puede ser diferente el ciclo de trabajo.
Otra (pudiera ser desventaja) es que solo te deja usar de 0 (0%) hasta 255 (100%).
Si lo haces directamente en hardware, moviendo y acomodando los registros necesarios tendrás los 10 bits (0=0%,1023=100%) por lo que la resolución del ancho de pulso se hace mas fina.
Yo usaré esto:
http://www.microengineeringlabs.com/resources/samples/pbp/hardpwm.basEs un programa para configurar los registros del hardware con los 10 bits.
Espero te sirva.