Vâng. Có lẽ vấn đề là ở khung truyền của mình . Anh đã xem bài em gửi hôm trước chưa ạ. Theo như em tìm hiểu thì khung truyền của nó dạng như sau :
Untitled.jpg
Áp dụng vào ví dụ cụ thể: Địa chỉ slave là 2, cần đọc giá trị của 1 thanh ghi có địa chỉ là 4123.
Hôm trước a có nói là hàm RS2 nó tự động tính và thêm mã kiểm tra CRC vào trong khung truyền.
Do vậy khung truyền thực hiện trong lệnh RS2 sẽ là:
0203101B01
Tương ứng với lệnh RS2 viết trên kênh 1 sẽ là :
RS2 D1000 K6 D1500 K6 K1
Còn về phần nhịp truyền và nhận dữ liệu để tránh xung đột thì em sử dụng cờ M8402 (gửi yêu cầu) và M8403 (hoàn tất nhận dữ liệu). Sau khi M8403 = 1 thì mới tiếp tục đọc trạm tiếp theo.
Em hiểu như vậy có đúng không anh. Mong anh hướng dẫn.
Đánh dấu