View Single Post
Old 31-10-2009, 10:08 AM   #54
npbaoduy
Đệ tử 2 túi
 
Tham gia ngày: Sep 2008
Nơi Cư Ngụ: Tp. HCM
Bài gửi: 38
:
Em đã thử rồi, sau khi ghi vào ROM, cho I2C stop, timer chạy, mỗi lần ngắt sau 0.5s mới start i2c và đọc từ rom, nhưng nó chỉ đọc được giá trị 0. Phần giao tiếp I2C thì ko báo lỗi, vì nếu báo lỗi, chương trình sẽ dừng khi vào hàm I2C_Fail(), đằng này chương trình vẫn chạy (có led nhấp nháy và cứ sau mỗi 0.5s đều gởi ra cổng nối tiếp giá trị 0).
Code:
void _ISR _T1Interrupt(void) {
	_T1IF = 0;			//Xoa co ngat
	_LATC4 ^= 1;		//Lat trang thai LED
	_SEN = 1;			//Tao ra dieu kien START
		Wait_I2C();			//Cho hoat dong I2C hoan tat
		
		Write_I2C(0xA0);
		if (_ACKSTAT)	I2C_Fail();		//Neu NACK thi xu ly loi
		
		Write_I2C(0x00);
		if (_ACKSTAT)	I2C_Fail();		//Neu NACK thi xu ly loi
		Write_I2C(0x01);
		if (_ACKSTAT)	I2C_Fail();		//Neu NACK thi xu ly loi
		
		_RSEN = 1;			//Tao ra dieu kien RESTART
		Wait_I2C();			//Cho hoat dong I2C hoan tat
		
		Write_I2C(0xA1);	//Ghi dia chi cua ROM, chuan bi doc tu ROM
		if (_ACKSTAT)	I2C_Fail();		//Neu NACK thi xu ly loi

		temp = Read_I2C();
		_PEN=1;
		Wait_I2C();
		U1TXREG = temp;
		while (!U1STAbits.TRMT);
}
Nhân tiện đây em cũng xin hỏi, điều kiện start và restart khác nhau như thế nào?
Em xin cám ơn
npbaoduy vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn