【发布时间】:2014-02-13 23:41:59
【问题描述】:
我正在尝试使用 I2C 协议将 Arduino Uno 连接到 PIC18F4620,
我为 Arduino 编写了这段代码
#include <Wire.h>
void setup()
{
Wire.begin();
Serial.begin(9600);
}
void loop()
{
Wire.beginTransmission(0xA0);
Wire.write(2);
Wire.write('I');
Wire.write('2');
Wire.write('C');
Wire.write('\n');
Wire.endTransmission();
Serial.println("Send to I2C Slave 0xA0");
delay(1000);
}
以及使用 CCS 编译器的 PIC18F4620 代码:
#include <slave.h>
#use rs232(stream=string,baud=9600, xmit=PIN_C6, rcv=PIN_C7,parity = N, bits = 8)
#define P_SDA PIN_C4
#define P_SCL PIN_C3
#use i2c(slave, sda=P_SDA, scl=P_SCL,address=0xA0)
void main()
{
char data;
char buffer_I2C[10];
int i=0;
printf("SLAVE\r\n");
while(TRUE)
{
if(i2c_poll())
{
data = i2c_read();
printf("%d \r\n" ,data);
if(data != -96)
{
if(data == '\n')
{
if(buffer_I2C[0] == 2)
{
buffer_I2C[i]='\0';
printf("Message - %s\r\n",buffer_I2C);
}
}
else
{
buffer_I2C[i]=data;
i++;
}
}
else
{
i=0;
}
}
}
}
问题是 PIC 没有响应 Arduino,我的意思是当 arduino 向 PIC 发送数据时,PIC 没有收到任何东西,
这段代码有什么问题??
提前致谢。
【问题讨论】: