No deberia para nada.
Lo unico que se me ocurre para probar ( por que realmente es probar y ver donde esta el error ), veo que tambien ya es mas para una version final y que posiblemente tengas las PCB hechas, pero lo que se me ocurre es:
- Si es posible usar otro pin con salida PWM, preferentemente de un puerto distinto como el PORTA ( el PORTB es el que tiene el SPI en especial su entrada ).
( Esto eliminaria si es por que estan muy cerca los caminos del SPI y del PWM, pero como ya lo probaste al aire libre entonces no deberia influir en tu resultado, tambien serviria para ver si es un error de puerto o de configuracion del PWM )
- En ves de poner a 0 los registros PWMxDCx , poner a 0 el registro que maneja el duty.
The PWM output is active. (Exception: When the PWM duty cycle = 0%, the PWM output will remain inactive.)
( Eso es para probar, especialemente por que los registros PWMxDCx son latcheados y solo se actualizan cuando el TMR2 produce una coincidencia ).
- Probar en el momento de querer "desabilitar" la salida del PWM, cambiarlo de periferico al modulo I/O (RC1), previamente poniendo un 0 en LATC. Entonces para desactivarlo cambias de "fuente" podriamos decirlo.
( Como para determinar que el problema es el modulo PWM y no todo el conjunto del PIC, y/o tratar de desactivarlo de otra forma y no poniendo a 0 el periodo )
- Mientras transmite el SPI, observar con el osciloscopio VDD ( para saber que este esta fijo y no varia para nada)
- Seria posible ponerle una resistencia de pull-down sin que afecte el circuito de salida del PWM ?
( Esta ya es mas una solucion de auxilio mas que algo con un poco de razon logica )
Si ya con eso no funciona o no le encontras el error entonces no se que mas decirte. las lineas de PWM y SPI deberian estar totalmente separadas una de otra y no deberia haber contacto, en fin no me quedan mas opciones ni ocurrencias.