View Single Post
Old 14-03-2008, 08:35 PM   #7
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Bạn xem lại chương trình mà bạn đã tham khảo, ở phần đọc dữ liệu từ DS1307, trong một loạt lệnh i2c_read(), chỉ có lệnh cuối là dùng i2c_read(0), còn những lệnh trước đó là i2c_read(), tức là tương đương với i2c_read(1). Đoạn code trong hàm ds1307_init() của bạn có 2 lệnh gọi i2c_read(0) ở phần đầu, đây chính là chỗ không ổn. Trong một loạt lệnh read từ I2C, mỗi lệnh đều phải ACK trừ lệnh sau cùng, để báo cho slave biết là master không muốn đọc nữa.

Bạn đọc thêm về I2C ở đây:
https://www2.hcmut.edu.vn/~nqnam/Commu.php#i2c

Và tham khảo thêm tập tin nguồn "Vidu4-4.c" trong tutorial 4 dành cho dsPIC của tôi, tôi đã chú thích thứ tự những thao tác cần thực hiện khi giao tiếp với DS1307.

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn