He creado la siguiente configuración:
Creé un circuito en el que la PC se conecta a un módulo de radio HM-TRP a través de un max232 DIP IC. Este circuito para la prueba es el maestro para todos los dispositivos y envía a su vez un paquete de 16 bytes a cada esclavo.
El segundo circuito es un sistema completo en un microcontrolador con un módulo de radio HM-TRP. Este circuito está destinado a ser un esclavo. Este esclavo envía un paquete de resultados que es de 16 bytes dos veces seguidas en el momento en que se recibe un paquete válido del maestro.
Cuando el maestro envía cualquier tipo de datos de forma continua a una velocidad de 56 K, el esclavo recibe todo.
Si el maestro intenta enviar 16 bytes de datos a una velocidad de 56 K que el esclavo espera recibir y el maestro espera 20 ms después de enviar el último bit de datos, entonces puede recibir los datos de resultados correctos que el esclavo ha enviado. .
Ahora, si cambio el tiempo de espera de 20 ms a 15 ms, el esclavo no devuelve datos. Lo sé observando las luces en los módulos de radio en sí mismos.
Esto me sugiere que no es la computadora ni el microcontrolador el problema, sino la sincronización.
Si mi cálculo es correcto, entonces creo que el tiempo debería ser el siguiente:
El maestro envía un paquete de 16 bytes. El maestro recibe un resultado de 16 bytes del esclavo correcto. El Maestro vuelve a recibir el mismo resultado.
Por lo tanto, 1/57600 por 10 bits por byte por 48 = 8.3ms
Lo que significa que debería tomar 8.3 ms y unos pocos cientos de microsegundos para procesar toda la comunicación entre el maestro y cualquier esclavo.
Entonces, ¿por qué necesito hacer que el tiempo de espera sea de 20 ms en lugar de 8 ms? Quiero decir que escuché en algún lugar acerca de algún tiempo de "aceleración" cuando el receptor cambia al modo de transmisión o viceversa. pero no lo se y la documentación del módulo no explica nada acerca de los retrasos.