Entonces se puede hacer un PWM de este tipo, que lógicamente no requerirá mucha resolución utilizando cualquier temporizador, de modo que se tenga una interrupción cada cierto tiempo, tomemos como ejemplo este PWM que tiene frecuencia de 50Hz, o mejor un período de 20ms y dividamos este en 100 partes, para tener una "resolución porcentual" que vaya de 1-100%, obtenemos que 20/100=200us, ahora cogemos un timer cualquiera, yo utilizaría el Timer1 y el CCP, para fijar una frecuencia exacta de 200us. y en la interrupción del timer o del CCP programo la subida o bajada del pin del PWM.
Unas banderas y unos contadores me permitirían hacer la lógica de cuando subir y bajar el pin, una variable global puede servir para establecer de cuanto debe ser el ciclo útil 0-100% y con estas cosillas podemos hacer un PWM de 50Hz, pero donde el elemento que lleva la cuenta del tiempo es un dispositivo HW (temporizador o temporizador+otro periférico) no debemos dejar en poder del uC esto de andar llevando el tiempo para este tipo de procesos, porque pueden verse cosas raritas.
Saludos
Reinier
PD: firepic, gracias por la categoría de maestro, pero me faltan un par de meses para comenzar mi carrera de profesor. De momento me conformo con ser un colaborador más del foro. Además tu te diste cuenta que el PWM del PIC no se puede utilizar en este caso porque sus posibilidades de configuración no nos permiten períodos tan bajos.
Skualo, el PIC que utilizas tiene dos PWM integrados, lástima que no puedas utilizarlo, o tendrías que bajar mucho la frecuencia de trabajo del PIC, pero eso no creo que te convenga, de todos modos con las señas que te doy y un poco de esfuerzo de tu parte podrás hacer lo que quieres sin grandes problemas, cuando te trabes llégate por acá.