View Single Post
Old 22-07-2008, 10:42 PM   #13
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
WaitForWrite của Nigel trong tutorial 6.5 như sau:
Code:
WaitForWrite					; poll ACK for write timing
		call 	I2C_Start
		call	I2C_Set_Write
		btfsc	I2Cflags, 0
		goto	WaitForWrite
		return
Về lý thuyết, nếu bạn gọi Write_RTC mà không giao tiếp được thì có khả năng chương trình kẹt ở đó luôn. Vì WaitForWrite của Nigel là một vòng lặp chỉ có một cách thoát là bit 0 của I2Cflags phải bị xóa về 0 (tín hiệu ACK), mà đã không giao tiếp được thì có bao giờ nhận được ACK đâu.

Vì chân SDA thuộc loại cực thu/máng hở, nên bạn gỡ điện trở kéo lên đồng nghĩa với tự động ACK. Do đó, chip sẽ chạy như đã nhận được ACK. Bây giờ bạn còn phát biểu "Thật không thể hiểu nổi" không?

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