transmitir simultáneamente varios. Sin embargo, las salidas TX se ponen en alto al no enviar datos,
por lo que simplemente no pueden estar conectados juntos. En su lugar, puede utilizar una puerta
AND como se muestra en el diagrama para combinar las señales. Observa que en muchos casos el
recibir respuestas no es necesario por lo que las líneas TX pueden quedar desconectadas.
Cuando haya varios dispositivos recuerda la conexión a tierra de todos ellos y asegurarte de que
cada dispositivo tiene la alimentación apropiada. Los dispositivos apagados con puerto serie TTL
pueden activarse en parte, dando alimentación a la línea, lo que significa que debes tener cuidado al
apagarlos o al resetearlos.
Enviando Comandos
El Pololu Protocol o el Mini SSC protocol pueden usarse cuando múltiples dispositivos Pololu están
recibiendo los mismos datos vía serie. Esto permite a los dispositivos tener direcciones individuales
y las respuestas que se envíen no colisionen. Si los dispositivos están configurados para detectar la
velocidad en baudios, entonces cuando se emita el primer comando de protocolo Pololu, los
dispositivos podrán detectar automáticamente la velocidad desde el byte de inicio 0xAA. Algunos
dispositivos antiguos de Pololu utilizan 0x80 como byte inicial. Si la cadena de dispositivos espera
0xAA, primero podemos transmitir 0x80 para que estos dispositivos detecten la velocidad y sólo
entonces enviar el byte 0xAA para que el Maestro pueda también detectarla. Una vez que todos los
dispositivos han detectado los baudios, los dispositivos Pololu que esperan que un byte 0x80
ignoraran el 0xAA y Maestro pasará hará lo mismo con el comando 0x80.
5.h. Ejemplo de código de transmisión
5.h.1. PIC18F4550
El siguiente ejemplo de código para un PIC18F4550 ha sido remitido por Ney Palma Castillo. Ha
de ser compilado con el compilador de C de PIC MCU. El código muestra cómo controlar un
Maestro mediante comandos serie desde los pins C6 y C7. El primer comando para el canal 0 de
servo sirve para llevarlo a su mínima posición y después un segundo más tarde, para ir a la posición
neutral. Ver sección 5.e para obtener información sobre la conexión del PIC al Maestro y definir el
modo serie para Maestro "
#include<18f4550.H>
#fuses HSPLL, NOMCLR, PUT, BROWNOUT, BORV43, NOWDT, NOPROTECT, NOLVP
#fuses NODEBUG, USBDIV, PLL5, CPUDIV1, VREGEN, CCP2B3
#use delay(clock=48000000)
#define TTL_TX1 PIN_C6
#define TTL_RX1 PIN_C7
#use rs232(xmit=TTL_TX1, rcv=TTL_RX1, bits=8, parity=N)
void main() {
delay_ms(2000);
while(true) {
// Envia Set Target usando protoclo Pololu.
putc(0xAA);
putc(0x0C);
putc(0x04);
putc(0x00);
putc(0x20);
putc(0x1F);
delay_ms(1000); // espera un segundo
// Envia Set Target usando protoclo Pololu.
putc(0xAA);
putc(0x0C);
putc(0x04);
putc(0x00);
putc(0x70);
putc(0x2E);
delay_ms(1000);
}
}
UART, detect baud rate."
// Byte de arranque
// Dispositivo ID = 12
// Comando = Set Target
// Canal = 0
// Posicion destino = 1000 us (minima para servos)
// Posicion destino = 1500 us (neutral para servos)
25