Chào mọi người!
Đang thực hiện một cái mạch về I2C. Có một số vấn đề mình đã giải quyết được, nhưng mình thấy vẫn chưa thuyết phục lắm. Pót lên mọi người cùng bàn bạc.
Mạch như sau: Gồm 3 con PIC là 877a, 876a va 88 giao tiếp với nhau qua bus i2c. Dư liệu truyền và nhận được hiển thi trên LCD hay Led 7. Mình lập trình cho chúng giao tiếp ở chế độ Multi-Master mode.
- Khi mạch chỉ có một con là Master còn lại là Slave và việc giao tiếp từ Master đến Slave thì mình đã giải quyết được. Việc truyền nhận một chuỗi ký tự là ổn. Mình dùng CCS, sử dụng hàm i2c_isr_state() và các hàm cho i2c khác. Dùng ngắt SSP để xử lý.
- Vấn đề cần giải quyết ở đây là khi mạch có 2 con đều là Master (giả thiết 877a và 876a là Master,còn 88 là Slave). Mỗi con master đều có một địa chỉ nhất định (ví dụ 877a = 0xA0; 876a = 0xB0; F88 = 0xC0) Khi muốn truyền nhận giữa 2 con Master với nhau thì quá trình truyền luôn xảy ra lỗi. Bác nào đã làm cái này rồi xin chỉ giáo thêm. Tôi làm bằng CCS 3.242.
Thường các mạng I2C có một con Master,còn lại là Slave. Nếu như vậy thì không có vấn đề gì, cái này bác nào đã làm I2C đều giải quyết ổn. Vấn đề chính là chế độ Multi-Master. Mình đã tham khảo trên nhiều trang cua nước ngoài nhưng đa phần đều chỉ giới hạn ở việc giao tiếp 2 con PIC hay PIC với ngoại vi.
Chúng ta cùng giải quyết!.
Đang thực hiện một cái mạch về I2C. Có một số vấn đề mình đã giải quyết được, nhưng mình thấy vẫn chưa thuyết phục lắm. Pót lên mọi người cùng bàn bạc.
Mạch như sau: Gồm 3 con PIC là 877a, 876a va 88 giao tiếp với nhau qua bus i2c. Dư liệu truyền và nhận được hiển thi trên LCD hay Led 7. Mình lập trình cho chúng giao tiếp ở chế độ Multi-Master mode.
- Khi mạch chỉ có một con là Master còn lại là Slave và việc giao tiếp từ Master đến Slave thì mình đã giải quyết được. Việc truyền nhận một chuỗi ký tự là ổn. Mình dùng CCS, sử dụng hàm i2c_isr_state() và các hàm cho i2c khác. Dùng ngắt SSP để xử lý.
- Vấn đề cần giải quyết ở đây là khi mạch có 2 con đều là Master (giả thiết 877a và 876a là Master,còn 88 là Slave). Mỗi con master đều có một địa chỉ nhất định (ví dụ 877a = 0xA0; 876a = 0xB0; F88 = 0xC0) Khi muốn truyền nhận giữa 2 con Master với nhau thì quá trình truyền luôn xảy ra lỗi. Bác nào đã làm cái này rồi xin chỉ giáo thêm. Tôi làm bằng CCS 3.242.
Thường các mạng I2C có một con Master,còn lại là Slave. Nếu như vậy thì không có vấn đề gì, cái này bác nào đã làm I2C đều giải quyết ổn. Vấn đề chính là chế độ Multi-Master. Mình đã tham khảo trên nhiều trang cua nước ngoài nhưng đa phần đều chỉ giới hạn ở việc giao tiếp 2 con PIC hay PIC với ngoại vi.
Chúng ta cùng giải quyết!.
Comment