Trích:
Nguyên văn bởi scentoflove
Cái này em có sửa rồi đúng với thanh ghi cũng như cờ ngắt, hàm wait_i2c() hoạt động bình thường, hàm write_i2c() gọi wait_i2c() vẫn chạy được khi em xuất dữ liệu ra nhưng read_i2c() thì bị treo
|
Trong trường hợp này tôi chưa có đủ thông tin. Vì khi đọc từ ngoại vi thì thông thường master sẽ ghi ra trước rồi tạo RESTART, sau đó mới đọc về từ ngoại vi. Theo tài liệu dsPIC33F FRM - Section 19 về I2C thì sau cạnh xuống của xung clock thứ 8 thì module cũng sẽ bật cờ ngắt MI2CxIF, do đó theo tôi phần wait_i2c() vẫn có thể được dùng để phát hiện thời điểm hoàn tất việc nhận từ ngoại vi. Bạn nên post phần code đó để tiện phân tích. Chứ chỉ nói rằng wait_i2c() làm việc với write_i2c() mà không làm việc với read_i2c() thì tôi bó tay. Vì những hàm đó là do bạn viết ra.
Thân,