Problema con salidas PWM en pines 5 y 6

Muy buenas, estoy tratando de controlar 4 servos por los pines 5, 6, 9 y 10 pero he tenido varios problemas con los pines 5 y 6 debido a que al mandar el mismo valor que le envío a los demás esos 2 servos se comportan de una manera diferente. He investigado en Internet y he visto que los PWM de Arduino vienen asociados a 3 timers diferentes y entre ellos están el 5 y 6 que están asociados al timer0 lo cual trabajan a una frecuencia diferente, sin embargo, no sé cómo podría hacer o si es posible configurar estos pines para que trabajen todos por igual ya que he realizado una PCB y no quisiera volver hacerla sólo por estos 2 pines.

Estoy utilizando un Atmega328P THT de los que trae el Arduino Uno.

Jhony9625:
entre ellos están el 5 y 6 que están asociados al timer0 lo cual trabajan a una frecuencia diferente, sin embargo, no sé cómo podría hacer o si es posible configurar estos pines para que trabajen todos por igual

Se puede, pero ten presente que dicho timer dispara una interrupción que hace posible funciones como delay(), millis() y micros(); alterar su frecuencia implica alterar el ritmo en que estas funciones cuentan el tiempo.

Si, eso es un problema, entonces la única solución sería cambiar de pines?

¿Has probado el 3 y 11? Esos pertenecen al timer2, el cuál no afecta nada si se altera.

Si, con el 3 y 11 funciona perfectamente, sólo que como dije antes ya tengo una PCB hecha y no quería hacerla nuevamente ni alterarla pero veo que me va tocar.

Muchas gracias.

He seguido realizando pruebas con los servos y los probé con la librería de servos que trae Arduino y ya me funcionan correctamente, pero sinceramente no logro comprender por qué si le envío un tren de pulsos con analogWrite no me funciona y si utilizo la librería si. La librería no realiza prácticamente lo mismo que la función analogWrite?

Jhony9625:
pero sinceramente no logro comprender por qué si le envío un tren de pulsos con analogWrite no me funciona y si utilizo la librería si.

Servo utiliza el timer1 para generar el tren de pulsos, creo que para marcar el ritmo nada más porque por algo es que se puede hacer en cualquier pin y no solo en el 9 y 10. Afecta si se intenta hacer analogWrite() en alguno de esos.

Jhony9625:
La librería no realiza prácticamente lo mismo que la función analogWrite?

Sí y no. La frecuencia es distinta y los ciclos de trabajo (ancho del pulso) posiblemente, o no den para todo el recorrido del servo, o sea muy poco granular (poca resolución) como para posicionarlo en un ángulo muy específico (da pasos muy grandes).

Según el estándar, un servo y un ESC se controlan con un tren de pulsos de 50 Hz, cuyo ancho oscila entre 0.5 y 2.5 ms dependiendo del dispositivo en cuestión.
Solo el timer1 es lo suficientemente flexible para lograrlo fácilmente, con el resto habría que hacer unos cuantos malabares.

Muchas gracias por la información Lucario me fue de mucha utilidad, en este caso me fue mejor con la librería que por el lado manual.