Một kịch bản phổ biến là có một PC gửi lệnh đến vi điều khiển thông qua RS232. Chương trình PC của tôi đang gửi các lệnh (mỗi lệnh được tạo thành từ nhiều byte) nhanh nhất có thể đến một robot nhỏ. Bộ vi điều khiển trên robot là Parallax Propellor.
Tôi đã nhận thấy rằng nếu tôi không xử lý byte đủ nhanh ở phía vi điều khiển, thì nó có thể nhanh chóng tràn bộ đệm mặc định trong trình điều khiển cổng nối tiếp phổ biến có sẵn cho Propellor. (Bộ đệm thường ở bất kỳ đâu từ 16 đến 256 byte). Tôi có thể tùy ý tăng các bộ đệm này hoặc tạo bộ đệm tròn lớn hơn của riêng mình, nhưng tôi muốn có một cách tiếp cận có phương pháp hơn để xác định các yêu cầu kích thước phù hợp và / hoặc lượng thời gian tối thiểu tôi có thể đợi trước khi rút byte ra khỏi bộ đệm trình điều khiển cổng nối tiếp .
Trong nháy mắt thứ nhất:
- 115200 == 115,2 bit mỗi mili giây == ~ 12,8 byte mỗi mili giây (giả sử 1 bit stop)
1) Đó có phải là cách hợp lệ để tính thời gian cho truyền nối tiếp không?
Ngoài ra, đưa ra thiết lập cụ thể của tôi:
- Chương trình PC <-> Trình điều khiển cấu hình nối tiếp Bluetooth <-> Bộ thu phát Bluetooth <- * -> Modem không dây BlueSMIRF <-> Chương trình truyền phát Parallax
2) Lượng dữ liệu tối đa tôi có thể gửi trong một khoảng thời gian nhất định mà không gặp sự cố?
Có thể tôi quá phức tạp mọi thứ, nhưng có vẻ như có nhiều bộ đệm liên quan đến chuỗi truyền tải ở trên. Làm thế nào để những người khác thường đối phó với điều này? Họ có điều tiết PC gửi đến một tỷ lệ an toàn đã biết không? Thực hiện kiểm soát dòng chảy? Nếu thực hiện kiểm soát luồng, điều đó ảnh hưởng đến băng thông và thời gian đáp ứng như thế nào?
(Nếu có vấn đề, thử nghiệm của tôi là sử dụng cần điều khiển trên PC để điều khiển nhiều động cơ phản ứng tức thì với chuyển động của cần điều khiển. Vì vậy, mỗi chuyển động nhỏ của cần điều khiển đều dẫn đến nhiều lệnh được gửi đến vi điều khiển. Các lệnh không đơn giản Mặc dù các lệnh vị trí, chúng cũng liên quan đến việc tăng / giảm tốc độ của các servo theo thời gian và đây là lý do mà vi điều khiển dành một lượng đáng kể chu kỳ xung nhịp trước khi xử lý các byte mới.)