Fijar los problemas de latencia en serie de Arduino

[Pablo] escribió para informarnos sobre algunos problemas interesantes de latencia arduino que ayudó a clavar y arreglar en el Arduino.

Parece que [Michu] estaba teniendo algunos problemas con el control de su proyecto Rainbowduino que presentamos a principios de este año, y él no pudo averiguar por qué estaba experimentando demoras tan grandes al enviar y recibir datos.

La búsqueda en línea para las respuestas se convirtió muy poco, y debido a que [Michu] estaba utilizando el procesamiento, la pareja desarrolló un conjunto de pruebas para ver qué tipo de latencia estaba siendo introducida por Java. Picando a un Arduino Uno y un Arduino desde 2009 contra un Teensy 2.0, las pruebas medió la latencia de las transferencias de datos nativas en comparación con las transferencias facilitadas por Java a través de la biblioteca RXTX que utiliza para las comunicaciones en serie.

Los resultados fueron bastante impresionantes. Mientras que ambos de los arduinos se retiraron detrás del teensy por un tiro largo, sus valores de latencia bajo Java siempre estaban a los 20ms como mínimo, algo no se suma. [Michu] se asomó en el código RXTX y encontró un demonio de 20 ms de Mystery programado en la biblioteca serie. No tenía sentido para él, por lo que cambió el retraso a 2ms y vio un aumento drástico en el rendimiento al transferir menos de 128 bytes de datos.

La solución del par no parece afectar la latencia cuando se transfieren mayores cantidades de datos (> 1kb), pero hace un mundo de diferencia al manipular trozos más pequeños de datos.

Por el bien de la divulgación, debe tenerse en cuenta que la compañía [Pablo] produce la MCU Teensy.

Back to top