20-12-2006, 02:05 PM | #1 |
Đệ tử 2 túi
Tham gia ngày: Oct 2006
Bài gửi: 43
: |
Help! Giao tiếp I2C giữa 2 PIC
Mình làm 1 cái giao tiếp i2c đơn giản dùng PICC !
Nhưng chả hỉu sao không chạy được nữa! mình thử debug bằng MPLAB IDE thì khi đến dòng lệnh i2c_start thì không tiếp được nữa! Các bạn có thể giúp mình một chút được không? Chương trình chỉ đơn giản là Master(U2) gọi Slave dậy ( đang sleep), Slave tăng 1biến rồi gửi cho Master hiển thị ra PORTD. Mình gửi code và hình kèm theo! Code:
//================================================================== //Ten Chuong Trinh:i2c_test 01 //Ngaythang nam //ChipChipVn //Mo ta chung:Master code //================================================================== #include <16f877a.h> #use delay(clock=4000000) #use i2c(MASTER,SCL=PIN_C3,SDA=PIN_C4,ForCE_Hw) #fuses HS,NOWDT,NOPROTECT int8 DataIn; #INT_EXT Data_read() //doc du lieu tu Slave { output_low(PIN_C5); delay_ms(1); output_high(PIN_C5); delay_ms(2); // Delay doi. Slave tinh day i2c_start(); i2c_write(0xA1); DataIn=i2c_read(); i2c_stop(); } main() { DataIn=0; enable_interrupts(global); enable_interrupts(INT_EXT); while(1) output_D(DataIn); // Luon hien thi DataIn } Code:
//================================================================== //Ten Chuong Trinh:i2c_test 01 //Ngaythang nam //ChipChipVn //Mo ta chung: Slave code //================================================================== #include <16f877a.h> #use delay(clock=4000000) #use i2c(SLAVE,SCL=PIN_C3,SDA=PIN_C4,Address=0xA0,ForcE_Hw) #fuses HS,NOWDT,NOPROTECT int8 DataOut; #INT_EXT Data_write() { DataOut++; i2c_write(DataOut); } main() { enable_interrupts(global); enable_interrupts(INT_EXT); // Su dung InT de danh thuc Slave ext_int_edge(0,L_TO_H); while(1) sleep(); } thay đổi nội dung bởi: chipchipvn, 21-12-2006 lúc 10:13 PM. |
|
|