Timers

Buenas noches:

Es mi primer post, el tema ya lo busque en google pero hay poca información os explico mi problema.
Estoy haciendo un mini robot con ROS, básicamente el arduino tiene dos subscriber y dos publishers, los publishers publican el tópico mediante un timer que se dispara cada 0.20 segundos, esta implementado con la librería TimerOne.h, por otra parte intente implementar un controlador para los dos motores con un L298N, pero su respuesta poco lineal ha hecho que lo haya cambiado por un MDD3A de CYTRON, el problema con este motor es que necesita 4 PWM, en el ejemplo que ellos ponen de fabrica utilizan los pines 3,9,10 y 11

que corresponden a los timers 1 y 2, según creo. Por otra parte necesito obligatoriamente el pin 2 y 3 porque los motores tienen encoders y es por donde van a entrar los pulsos con sus correspondientes interrupciones.
En resumen quisiera saber si puedo utilizar para el controlador los pines 5,6,9 y 10 a pesar de que tienen diferentes frecuencias (Timer 0 y Timer 1), eso me dará problemas, interferirá esto con el timer de la librería TimerOne, que no se que timer usa, o debo modificar los timers para que vayan a la misma frecuencia si es que se puede, si es así agradezco ideas. Como veis de timers de Arduino se poco

podrías utilizar millis o no te sirven?

En principio no, el asunto es que el software genera un interrupción cada 0.20 segundos, con la librería TimerOne.h los milis tendrían que ir dentro de un bucle que en x tiempo disparara el evento al ser el programa bastante largo el tiempo podría ser muy irregular con el método millis.

0.20 segundos = 200 milisegundos como no puedes usar millis()?
Claro que si.
Si armas una máquina de estados tu robot puede funcionar debidamente y deja los pines reservados para PWM y para enconder sin alterar.
En un UNO o NANO los pines 2, y 3 son las unicas dos interrupciones disponibles hardware. Así que un enconder funcionará via librerías considerando solo esos dos pines.
Si la exigencia del encoder es menor puedes usar otros pines.

Por otro lado tienes 6 pines PWM en el UNO/NANO y no puedes apartarte de ellos.

Bueno el problema de los millis, aunque reconozco que no lo he probado es que el programa de Arduino es "pesado" es un nodo de ROS, con 2 publisher(datos de encoder Dcha e Izqdo) dos suscriber (PWM Dcho e Izqdo) mas las 2 interrupciones de los encoders de las ruedas (1920 ticks por revolución) y poco mas porque el PID, lo he implementado en el nodo del ordenador "central", a pesar de que debería estar lo mas cerca posible del Hardware,
Volviendo al tema en un programa tan pesado es difícil, aunque no lo he comprobado que el puntero de ejecucion pase por la instrucción If milis()-milis anteriores >= 200 cada 0.20 segundos, variaciones sensibles en ese tiempo darán una lectura errónea de los ticks por segundo, Revoluciones por Segundo y por tanto velocidad, posición, etc...
En fin el problema real es que pienso que el Arduino va muy sobrecargado y a lo mejor esto no es cierto, lo que si comprobe con un L298N es que con ISR, los tópicos salian cada 200 milisegundos con escasa o nula variación.