Probaste de medir la salida del pwm con el servo conectado o siempre sin conexión. Otra cosa, configura el puerto A todo como salida pues se te puede inducir ruido en estos pines y hacer que el micro se pierda.
Realicé unas simulaciones con el MPLAB con el código que posteaste con la salida en el pin_B4 y los tiempos que me dieron fueron los siguientes:
el período para un ancho de pulso de 1.5 ms:
período: 20,055ms
pulso en alto: 1,514ms
para un ancho de pulso de 2,100ms
período: 20,062ms
pulso en alto:2,111ms
para un ancho de pulso de 900us
período: 20,056ms
pulso en alto:911us
Desgraciadamente no tengo un servo para probar.