Hola Gera, me alegro porque haya salido todo bien la operación....
Te quedó con muy buena pinta el hexapodo
Respecto a la rutina de interrupción, no le encuentro nada raro, es bastante simple y funciona...
Ahora lo que dices del error de 1ms, me parece un poco mucho, ya que es casi el valor de la mitad del ancho del pulso.
Mi programilla no lo he probado con osciloscopio, solo he hecho pruebas directamente con los servos y por ahora funciona bien, el único problema que tuve es de que a angulos muy pequeños el servo no responde bien, pero no se bien si el problema es en el servo o en el programa, ya que el servo es para 180° y yo lo estaria usando para 270°, entonces si lo uso a 180° andaria perfecto.
La diferencia que le veo a tu forma de atender a los servos es que el programa esta interrumpiendo siempre a 50us, en cambio el mio interrumpe cada 40us, pero solo durante el ancho del pulso, es decir durante 2 ms y luego no interrumpe hasta que los pulsos deben ponerse en alto nuevamente.
Con esa idea yo cambiaría tu programa y que el contador solo incremente hasta 50, que es cuando todos los servos ya estan en nivel bajo.
Luego antes de salir de la rutina de la interrupción cargas el valor del tmr1 para que vuelva a interrumpir dentro de 17,5 ms.