Estoy construyendo una red RS485 con rpi3 como maestro y un montón de c51 mcu como esclavos. Después de enviar una dirección, el maestro espera a que el esclavo responda y luego comienza a enviar datos. Estoy usando Pyserial en Pi y hace un buen trabajo.
Esta es la parte de la clase
class Rs485(serial.Serial):
def __init__(self,en_pin):
serial.Serial.__init__(self, '/dev/ttyAMA0', baudrate=9600, write_timeout=3.0)
self.en_pin = en_pin
self.data_buf = 0
self.parity = serial.PARITY_SPACE
self.init()
self.timeout = 0.03
Esta es la parte donde se llama lectura
def receive(self):
ts.output(0, self.en_pin)
data_buf = self.read()
ts.output(1, self.en_pin)
return data_buf
Sin embargo, al intentar mejorar la eficiencia de la transmisión, descubrí que hay un retraso inesperado después de cada vez que se llama a serial.read. Las líneas ts.output se utilizan para configurar el pin de habilitación de max485 en modo de recepción y casi no cuestan tiempo. He confirmado que la línea self-read cuesta aproximadamente 5.7ms.
Mis preguntas son:
- ¿Por qué el retraso?
- ¿Alguna sugerencia sobre cómo podría reducir el retraso?
¡Gracias!