Arduino’nun Seri Gecikme Sorunlarını Sabitleme

[Paul], bize çiviye yardım ettiği ve arduino üzerinde düzeltildiği bazı ilginç Arduino gecikme sorunlarından bahsetmek için yazdı.

[Michu] bu yılın başlarında öne çıktığımız Rainbowduino projesini kontrol eden bazı problemler yaşıyordu ve verileri gönderirken ve alarken neden bu kadar büyük gecikme yaşadığını anlayamadı.

Cevaplar için çevrimiçi arama yapmak çok azdı ve [Michu] işlemi kullanıyordu, çifti, Java’nın ne tür bir gecikmediğini görmek için bir dizi test geliştirdi. Bir Arduino Uno ve Bir Arduino’nun 2009’dan bir Teensy 2.0’a karşı çukur yaparak, testler, Seri iletişim için kullandığı RXTX kütüphanesi aracılığıyla Java tarafından kolaylaştırılan transferler karşısında yerli veri aktarımlarının gecikmesini gösterdi.

Sonuçlar oldukça çarpıcı. Arduinoların her ikisi de uzun bir atış ile gençlerin arkasına geçerken, Java altındaki gecikme değerleri her zaman en az 20ms idi – bir şey toplamadı. [Michu] RXTX kodunda dolaştı ve seri kütüphaneye programlanan bir gizem 20ms gecikme buldu. Ona hiçbir anlam ifade etmedi, bu yüzden gecikmeyi 2MS’ye değiştirdi ve 128 bayttan daha az veri aktarırken performanstaki sert bir artış gördü.

Çiftin düzeltmesi, daha büyük miktarlarda veri (> 1KB) aktarıldığında gecikmeyi etkilemiyor gibi görünmüyor, ancak daha küçük veri parçalarını manipüle ederken bir fark yaratıyor.

Açıklama uğruna, [Paul’s] şirketinin Teensy MCU’yu ürettiği belirtilmelidir.