Sửa chữa các vấn đề độ trễ nối tiếp của Arduino
[Paul] đã viết để cho chúng ta biết về một số vấn đề độ trễ của Arduino thú vị mà anh ta đã giúp đóng đinh và sửa chữa trên Arduino.
Dường như [Michu] đã gặp một số vấn đề với việc kiểm soát dự án Rainbowduino của mình, chúng tôi đã giới thiệu vào đầu năm nay và anh ta không thể hiểu được lý do tại sao anh ta gặp sự chậm trễ lớn như vậy khi gửi và nhận dữ liệu.
Tìm kiếm trực tuyến cho câu trả lời đã bật lên rất ít, và bởi vì [Michu] đang sử dụng xử lý, cặp đã phát triển một tập hợp các bài kiểm tra để xem loại độ trễ nào được Java giới thiệu. Hít một arduino uno và một arduino từ năm 2009 so với một người thiếu niên 2.0, các thử nghiệm đã đo độ trễ của việc chuyển dữ liệu gốc so với các chuyển được tạo điều kiện bởi Java thông qua thư viện RXTX mà nó sử dụng để liên lạc nối tiếp.
Các kết quả khá tuyệt đẹp. Trong khi cả hai arduinos bị tụt lại phía sau độ tuổi thiếu niên bằng một cú sút xa, các giá trị độ trễ của chúng dưới Java luôn ở mức tối thiểu 20ms – một cái gì đó không thêm. [Michu] chọc vào mã RXTX và tìm thấy một sự chậm trễ 20ms bí ẩn được lập trình vào thư viện nối tiếp. Nó không có ý nghĩa gì với anh ta, vì vậy anh ta đã thay đổi sự chậm trễ thành 2ms và thấy sự gia tăng mạnh mẽ về hiệu suất khi chuyển ít hơn 128 byte dữ liệu.
Khắc phục của cặp đôi dường như không ảnh hưởng đến độ trễ khi lượng dữ liệu lớn hơn (> 1kb) đang được chuyển, nhưng nó tạo ra một thế giới khác biệt khi thao túng các khối dữ liệu nhỏ hơn.
Vì lợi ích của việc tiết lộ, cần lưu ý rằng công ty [Paul’s] sản xuất MCU Teensy.