Aquí tienes la configuración del programa:
Como usamos el mismo micro a 20Mhz simplificamos...
La distribución de los servos es la siguiente:
PORTD.0
PORTD.1
PORTD.2
PORTD.3
PORTD.5
PORTD.6
PORTD.7
PORTC.5
El puerto serie es el estándar:
TX/RC6
RX/RC7
Los puertos del display son:
D. BITS = 8
Datos = PORTB
RS = PORTC.0
E = PORTC.4
R/W = PORTC.1
Ordenes serie que admite:
Grupo = 255
Orden:
velocidad_motores = 77
on_off_motores = 78
status_motores = 79
tx_motores = 80
velocidad o posicion de los servos, minimo 30 y max. 60:
30 = 1 mSg.
45 = 1.5 mSg.
60 = 2 mSg.
Orden = 78
Hserout grupo, orden, dato0, aux_checsum_lb, aux_checsum_hb
El valor de dato0 se aplica a todas las salidas (comprendido 30 a 60).
Orden = 77
Hserout grupo, orden, dato0, dato1, dato2, dato3, dato4, dato5, dato6, dato7, aux_checsum_lb, aux_checsum_hb
Dato se aplica a cada una de las salidas respectivamente.
Orden = 79 (pide el estado de los servos)
Hserout grupo, orden, aux_checsum_lb, aux_checsum_hb
Orden = 80 (cuando recibe la orden 79 la placa responde con la orden 80, con el estado
de todos los servos.)
Hserout grupo, orden, pwm_m0, pwm_m1, pwm_m2, pwm_m3, pwm_m4, pwm_m5, pwm_m6, pwm_m7, aux_checsum_lb, aux_checsum_hb
Checsum es de 16 Bit
checsum = grupo + orden + dato0 + dato1 + dato2 + dato3 + dato4 + dato5 + dato6 + dato7
aux_checsum_lb = checsum (igual al byte bajo)
aux_checsum_hb = checsum (igual al byte alto)
en el DISPLAY aparecen los valores actualizados de las salidas.
Si tienes algun problema con esta configuración indicame las modificaciones.