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!
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();
}
nhh
Comment