Thông báo

Collapse
No announcement yet.

Hỏi về giao tiếp RS485

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Hỏi về giao tiếp RS485

    Tôi đang làm về giao tiếp RS485 dùng PIC để điều khiển, sử dụng MAX485 và 75176. Hệ thông gồm có 1 Master và 1 Slave. Thực hiện giao thức kiểu gần giống như I2C. Master sẽ chuyển một gói tin trên mạng có chứa ID của Salve mà nó cần đọc dữ liệu. Sau khi truyền xong gói tin, M trở về chế độ nghỉ đợi dữ liệu hoặc TimeOut. Slave khi nhận được gói tin sẽ giải mã. Nếu đúng ID của nó thì Slave sẽ chiếm Bus và truyền dữ liệu về Master. Phân giao thức như vậy tôi thấy có vẻ ổn, phần điện cho RS485 cũng tốt. Nhưng hiện đang gặp vấn đề với con Vi điều khiển - con PIC.

    Trong lập trình, cả Master và Slave tôi đều dùng ngắt UART để nhận dữ liệu, khung truyền từ Slave về có độ dài là 16Bytes. Dữ liệu truyền từ master, Salve đều nhận đúng và đủ. Trường hợp không có ID nào trùng slave thì hệ chạy không vấn đề gì (Master luôn báo TimeOut). Khi có Slave nhận đúng ID, sẽ truyền data về. Khi Nhận đủ 16Bytes(1 khung), Master sẽ bắn lên PC. Hiện tượng gặp phải là khi Master nhận cả một chuỗi dữ liệu gồm nhiều khung (max là 9, tương đương 9 * 16 = 144Bytes), thì có hiện tượng là cả Master và Slave đều bị đơ, Master tự Reset lại và cả hệ không còn thực hiện giao tiếp được. Phải thực hiện Reset toàn bộ thì mới giao tiếp lại được, nhưng vẫn lại xảy ra hiện tượng đó.

    Đây cũng là lần đầu làm RS485 với PIC, bạn nào có kinh nghiệm làm về RS485 thì xin chỉ giúp vấn đề. Nếu có thời gian thì cùng tôi làm về nó. (đây là một để tài, không quá nhiều tiền nhưng khá thú vị, hoan nghênh các bạn sinh viên có hiểu biết nhiều về RS485 cùng tham gia)
    Ethernet-RS232, PIC Webserver, RFID Reader
    CallerID, Cảnh báo BTS, ...
    0988006696
    linhnc308@gmail.com
    http://linhnc308.blogspot.com

Về tác giả

Collapse

linhnc308 Tìm hiểu thêm về linhnc308

Bài viết mới nhất

Collapse

Đang tải...
X