![]() |
|
|
#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. |
|
|
|
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|