Cuando dices 48Mhz te refieres al oscilador interno cuando el externo es de 20Mhz?
De la forma que pienso la rutina de interrupción es bloqueando el main(), es decir, hasta que no termina la modulación del pulso de 2,5mseg (todos los servos a la vez) no vuelve al programa principal.
Por ahí se podría ver la forma de llevar esos 2,5mseg a solo 2mseg si el ancho del pulso inicial para indicar la posicion cero del servo la manejamos con una interrupción.
De esta forma podemos tener una buena resolución del movimiento de los servos, que está claro que 256 ya es suficiente
Así tendríamos ocupado el micro máximo 12,5% con la atención de los servos.
Hago este análisis solo para compararlo con lo compartido por Guillermo haya por el 2008, que su programa se basa principalmente en interrupciones, pero está limitado en la resolución.
Si nos vamos por el lado que el PIC dedicado al control del servo sea "bobo" creo que con 17,5mseg tiene que alcanzar para transmitir nuestros datos, que si fueran 30 servos estariamos enviando 30 bytes.
Creo que es por donde tenemos que ir, y si fuera necesario alguna autonomia del robot dedicar otro micro "cerebro", siempre pensando que cualquier calculo matematico resulta pesado para nuestro PIC.
La forma mas eficiente de pasar los datos creo que es indicando directamente la posicion de cada servo uno a continuación del otro.
No entiendo mucho eso de poner una X, creo que trae problemas, en definitiva es un byte.
Tambien hay que recordar que cada 20mseg tenemos que refrezcar el valor de cada servo para realizar el decrementeo de cada uno en la rutina de manejo de servos. Con cargarle nuevamente el valor es suficiente.
Como decis vos Gera, enviar la trama completa es mas conveniente, aunque por alguna cuestion de pruebas se podria enviar un valor puntual a cada servo. Implementando el primer byte como un código y que a partir del segundo byte sea los valores de cada servo, y en otro caso el número de servo y la posición. Supongo que esto es un simple detalle
Lo que yo opino es que estamos alineados, salvo por el tema de la comunicación
Pregunta, aunque espero poder respondermela solo cuando haga los calculos
Es posible saber cual es la cantidad máxima de bytes que se pueden enviar en 17,5mseg a un determinado baud rate?
La misma pregunta pero para una comunicación HID full speed?