Hola.
Si son números flotantes no creo que tengas mayor problema porque lo más seguro es que redondee el programa. Si no lo hace, a la hora de cargar ese valor decimal al registro del µicro quizá sólo cargue el valor entero. Habría que preguntar a las personas que utilizan tu compilador (yo no uso C).
Sobre tu propuesta de control:
Me parece bien sin embargo, creo que no debes colocar el 1024.
Observa esto:
bits 10 9 8 7 6 5 4 3 2 1
Binario 1 1 1 1 1 1 1 1 1 1
cantidad 512 256 128 64 32 16 8 4 2 1
TOTAL= 1023
Para 1024 ocupas 11 bits
bits 11 10 9 8 7 6 5 4 3 2 1
Binario 1 0 0 0 0 0 0 0 0 0 0
cantidad 1024 512 256 128 64 32 16 8 4 2 1
Sería recomendable que observaras eso.
Otra situación:
¿Por qué no revisas si los registros CCPRxL y CCPxCON<5,4> cambian?
Si estás implementando el PWM con alguna instrucción de tu compilador que, como en el caso de PBP te permite 0 (0%), 127 (50%) y 255 (100%) está bien. Pero si quieres mayor resolución, los 10 bits del ancho de pulso, te recomiendo que escribas directamente en los registros.
CCPRxL es el byte de mayor peso y CCPxCON<5,4> son los dos bits de menor peso.
Revisa la dirección que te puse de microengineering labs, quizá te sirva (claro, si quieres 1023 incrementos en lugar de 255).
Ojalá te salga, eres de los pocos que he visto que inician algo y lo terminan (proyecto de escuela).
Muchos quieren que les hagas el trabajo
