He tenido problemas recibiendo mensajes entre el 2(BS2) de Basic Stamp y el 1(BS1) Basic Stamp. El BS2 es aproximadamente cuatro veces más rápido que el BS1. El BS1 se bloquea esperando el mensaje de BS2. El BS1 no puede ver el mensaje de BS2 en la ventana de millisecond(ms) 200 tiene que verificar que un mensaje. Esto es exactamente por qué hay tantas líneas de control de flujo en un conectores serial estándar. Máquinas más lentas no pueden ver más rápido. Necesitaba control de flujo, pero no quiero usar otro puerto para él. Tengo un fondo electrónico miraba el Rx y Tx como puertos no sólo como conexiones serie.
Control de flujo de Steve utiliza el puerto Tx como control de flujo. Tienes tus puertos Tx con un resistor de 47K en VDD y en el código. Monitor de su puerto Rx para detectar cuando una persona baja su puerto Tx. Cuando desea enviar un mensaje que traes su puerto Tx baja y luego espere hasta el receptor más bajo su puerto Tx y luego enviar su mensaje. El receptor debe permanecer en un bucle ajustado esperando el mensaje. Después del mensaje de ambos sistemas levante su puerto Tx alta y volver a esperar.
De BS1 y sistemas más lentos bajar el puerto de Tx de mi BS2 (Master) y pausar unos 80 ms y luego transmitir mi mensaje. El BS1 busca una baja en su puerto Rx y pausas 1ms y SerIn abre un mensaje de dos bytes. El primer octeto es la dirección y el segundo byte es las luces. Si la dirección no es correcta la BS1 salta el mensaje y vuelve a esperar. El BS1 es demasiado lento para el apretón de manos completo. Funciona perfectamente con la sincronización correcta.
Sólo puedo enviar un mensaje a la BS1 en cada diez bucles de código de mi BS2. Estoy ejecutando EasyLights en mi BS2 y enviar el byte de luces a la BS1 que sólo tiene doLights y checkLights y un bucle de mensajes. Véase mi artículo EasyLights.
No he podido conseguir el BS1 para enviar un mensaje correcto dos bytes. El primer byte es distorsionado y no sé por qué. El BS1 no puede utilizar mis dos bytes estándar mensajería (dirección, datos) por lo que estoy usando un canal serial independiente para manejar este tipo de esclavo. El BS1 baje su puerto Tx y espera hasta que el maestro baje su esclavo puerto Tx y la BS1 envía un mensaje de un byte que contiene las banderas de botón al maestro. Ambos levantan sus puertos Tx alta y volver a esperar.
Trabajo con el BS1 decidí hacerlos encuestados a esclavos. Yo simplemente mantenerlos vivos mediante el constante envío de mensajes. Hacen todo su trabajo dentro de su bucle de mensajes. No hay espacio para mucho más. Sólo sentarse allí y esperar un mensaje para que sus botones y luces están en realidad muertas. La interrogación les mantiene sus botones y luces.
Como conseguir cosas subo otra parte a este artículo interactivo.
Planificación es lo primero que debe hacer para crear una máquina interactiva. Escribí este documento primero y utilizó para programar mis procesadores. Ya que necesitamos comunicaciones serie vemos lo que cada procesador tiene sus Serial funciones SerIn y SerOut.
Arduino Uno calificadores completo serie 9600
PICAXE 28 x 2 eliminatorias completo serie 9600
Basic Stamp 2(BS2) calificadores completo serie 9600
Basic Stamp 1(BS1) serie parcial en eliminatorias sólo 2400
Serie completa significa serie de entrada y salida estándar. No estoy usando nada complicado.
Calificadores permiten abordar de los procesadores. Dispositivos como la serie e-proms tienen direcciones físicas. Calificadores de esperan la clave correcta antes de continuar con el mensaje y en algunos sistemas esto puede elevar un error que lo fuera el mensaje. Calificadores le permiten tener varios maestros y cientos de esclavos. En sistemas como el BS1 son demasiado lentas para otra cosa que la dirección básica de dos bytes, mensaje de datos. Todavía puede hacer mucho con este sencillo formulario de mensajería.
Rate(9600) de velocidad en baudios es la velocidad del flujo de datos entre los dispositivos. Procesadores como el básico 1 sello sólo pueden ir a 2400 por lo que debe utilizar esa velocidad con ellos.
El que transmite el primero es el maestro que los otros son recibe. Un amo es el mejor, pero más maestros son mejores. Calificadores y direcciones le permiten hacer esto.
En mi sistema mi Arduino Uno es Master 1 y mi Picaxe 28 x 2 Master 2. El BS2s pueden ser buenos maestros para las luces y botones, pero son maestro/esclavos aquí.
Tengo mi Arduino Uno conectado por el cable de programación a mi PC. Estoy utilizando el debug terminal para supervisar y controlar los otros procesadores a través de sólo Rx y Tx y tierra. Una forma muy sencilla de crear una máquina interactiva.
Este artículo está creciendo.
La dirección es un number(qualifier) que configurar para cada procesador y el dispositivo que tienes. Mi dirección es que un byte de formato como este tipo (Bits 7-6), número (Bits 5-0). Calificador o dirección del primer byte es enviar a otro procesador o dispositivo para abrir un mensaje con él. Todos los mensajes de terminan completamente después de enviar el último byte. Para enviar varios bytes a un receptor envíe un comando que le dice que están llegando más bytes. Sellos básicos son desde Parallax.com.
Tipo Master(128), Master/Slave(64), Device(192), Slave(0)
Número 0 – 63 Bits 5-0
Arduino Uno 128 Master(128) + Makezine.com/Store 0
PICAXE 28 x 65 2 Master/Slave(64) + 1 LetsMakeRobots.com
BS2 PJ1 Master/Slave(64) 66 + 2 Basic Stamp 2 Junta de proyecto
BS2 SC1 Master/Slave(64) 67 + 3 Basic Stamp 2 Super portador
BS1 PJ1 Slave(0) 4 + 4 Basic Stamp 1 Junta de proyecto
BS1 5 Slave(0) + 5 Basic Stamp 1
Las conexiones son TX(transmit data), RX(receive data) y tierra. Si el esclavo de su procesador de la energía que necesita potencia demasiado. La mayoría de las conexiones serie también necesitan tire resistencias en TX y RX de por lo menos 20K. Generalmente sus 40K. Consulte el manual de su procesador. Todos mis consejos son 5 voltios. En mi sistema el maestro/esclavos como el BS2 utilice otro canal serial para ejecutar a BS1 esclavos. Esto mantiene limpio el canal principal de la serie.
Los cables deben ser de par trenzado de dos vueltas por pulgada. Si vas más de diez pies uso blindado cables de par trenzado. Evitar cordones de extensión de potencia, transformadores, motores y otras cosas eléctricas. Los datos están asincrónicos, es decir tiene un reloj interno y eso la hace más susceptible al ruido de cualquier tipo. Tener una buena alimentación y un montón de grandes condensadores ayuda mucho.
RX(SerIn) y Tx(SerOut) son los puertos que usted elige en sus tablas de procesador:
Maestro flujo esclavo * PC mi cable
RX <<< resistencia Tx 22k TD negro
TX >>> resistor Rx 22k blanco RD
Ground G G Green
Power V+ X Brown
Mantener recta la mayoría de mis cables Tx---Tx según mi maestro. Esto evita confusión de breadboards y placas para el procesador. Para conexiones a PC y cosas puede conectarse el conector correcto Rx y Tx y alambre que pertenecen a ese sistema.
* Aplicaciones serie PC invierten de protocolo en la mayoría de los casos.
Bit de arranque y Stop bits se refieren a su posición de bit en la secuencia serial como banderas de mensaje y control.
Una de las claves para una máquina es un status byte o palabra que todo el mundo hablando en la misma página. Estoy utilizando un byte. Estado puede ser el primer byte enviado después de la dirección. Estado también puede ser comandos básicos en el otro procesador o dispositivo. Esto facilita los mensajes estándar de dos bytes.
Estado de apagado enviados detrás
Bit0 OK Busy D1
Mensaje de albañilería1 hecho D2
Bit2 espera ejecutar D3
Bit3 Mode Stay D4
Bit4 Data none D5
Bit5 Reset D6
Bit6 Cmd1 More
Bit7 Cmd2 Done
Organización es el primer paso para una máquina en funcionamiento. Trabajar con Bits es qué procesadores hacen todo el tiempo. Necesitamos ayuda con pedacitos. Utilizan los operadores lógicos y, o y cambio para trabajar con Bits. Cualquier cosa por encima de 63 es un maestro. Guardar el byte primero cambio derecha 6 bits para el tipo. Guardar la dirección por dirección = Anding con % 00111111.
Tipo = dirección >> 6 dirección = dirección y % 00111111
Endecha todo ello en constantes al principio de cada programa. Mantener todo actualizado y obtendrá una máquina en funcionamiento. Mala programación Serial muestra nada. Etiquetar todo para que usted sepa lo que está haciendo.