chipchipvn
20-12-2006, 02:05 PM
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!
//================================================== ================
//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
}
//================================================== ================
//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();
}
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!
//================================================== ================
//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
}
//================================================== ================
//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();
}