Bevestiging van de seriële latentiekwesties van Arduino

[Paul] schreef om ons te vertellen over enkele interessante kwesties voor Arduino-latentie die hij heeft geholpen om te spijkeren en op de Arduino te repareren.

Het lijkt erop dat [Michu] een aantal problemen had met het beheersen van zijn Rainbowduino-project dat we eerder dit jaar hadden gingen, en hij kon niet helemaal uitzoeken waarom hij zulke enorme vertragingen ondervond bij het verzenden en ontvangen van gegevens.

Online zoeken naar antwoorden die heel weinig is opgedoken, en omdat [Michu] de verwerking gebruikte, ontwikkelde het paar een reeks tests om te zien wat voor soort latentie door Java werd geïntroduceerd. Putten van een Arduino Uno en een Arduino vanaf 2009 tegen een Teensy 2.0, met de tests met de latentie van native data-transfers versus transfers gefaciliteerd door Java via de RXTX-bibliotheek die het gebruikt voor seriële communicatie.

De resultaten waren behoorlijk verbluffend. Hoewel beide Arduinos achter de tiener achterbleven door een lange opname, waren hun latency-waarden onder Java altijd 20ms op een minimum – iets valt niet op. [Michu] porte in de RXXTX-code en vond een Mystery 20ms-vertraging geprogrammeerd in de seriële bibliotheek. Het had geen zin, dus veranderde hij de vertraging tot 2ms en zag een drastische toename van de prestaties bij het overbrengen van minder dan 128 bytes van gegevens.

De fix van het paar lijkt geen invloed op de latentie wanneer grotere hoeveelheden gegevens (> 1 kb) worden overgedragen, maar het maakt een wereld van verschil bij het manipuleren van kleinere stukjes gegevens.

Omwille van de openbaarmaking zou moeten worden opgemerkt dat het bedrijf van [Paul] de Teensy MCU produceert.

Leave a Reply

Your email address will not be published. Required fields are marked *

Related Post