Arduino 导线库和软件串行导致复位
这个问题已经发布3天了,我们有3个arduino文件:Arduino 导线库和软件串行导致复位,arduino,Arduino,这个问题已经发布3天了,我们有3个arduino文件: main.ino module1.ino //module 1 is using software serial on pins 5,6 module2.ino //2 is using Wire library 每个模块都是自己工作的,但是当我们试图从主文件“一起”使用它们时,我们会在以下情况下得到无休止的重置: main: setup(); // 0 ( Wire connection setup) clearAcInt()
main.ino
module1.ino //module 1 is using software serial on pins 5,6
module2.ino //2 is using Wire library
每个模块都是自己工作的,但是当我们试图从主文件“一起”使用它们时,我们会在以下情况下得到无休止的重置:
main:
setup(); // 0 ( Wire connection setup)
clearAcInt(); //1 ( Wire connection)
connect(USER_SSID,USER_PASS); //2 ( software serial)
因此,只使用0+1效果很好,也只使用2个,但在0+1之后使用2会导致重置(设置功能已提交)
//0+1接线模块
#include <Wire.h>
#define DEVICE (0x53) //ADXL345 device address
#define TO_READ (6)
byte buff[TO_READ] ;
byte buffReg[8];
char str[512];
void setup()
{
Wire.begin();
}
char *clearAcInt()
{
//**the cause of the problem:
readFrom(DEVICE, 0x30, 8, buff); //0x30
return "non";
}
void readFrom(int device, byte address, int num, byte buff[])
{
Wire.beginTransmission(device); //start transmission to device
Wire.write(address); //sends address to read from
Wire.endTransmission(); //end transmission
//Wire.beginTransmission(device); //start transmission to device (initiate again)
Wire.requestFrom(device, num); // request 6 bytes from device
int i = 0;
while(Wire.available()) //device may send less than requested (abnormal)
{
buff[i] = Wire.read(); // receive a byte
i++;
}
// Wire.endTransmission(); //end transmission
}
#包括
#定义设备(0x53)//ADXL345设备地址
#定义为(6)
字节buff[读取];
字节buffReg[8];
char-str[512];
无效设置()
{
Wire.begin();
}
char*clearacit()
{
//**问题的原因是:
readFrom(设备,0x30,8,buff);//0x30
返回“非”;
}
void readFrom(int设备,字节地址,int num,字节buff[]))
{
Wire.beginTransmission(设备);//开始传输到设备
Wire.write(address);//发送要读取的地址
Wire.endTransmission();//结束传输
//Wire.beginTransmission(设备);//开始传输到设备(再次启动)
Wire.requestFrom(device,num);//从设备请求6个字节
int i=0;
while(Wire.available())//设备可能发送的数据少于请求的数据(异常)
{
buff[i]=Wire.read();//接收一个字节
i++;
}
//Wire.endTransmission();//结束传输
}
/2软件系列
#include <SoftwareSerial.h>
SoftwareSerial softSerial(5,6);
void setupCon()
{
softSerial.begin(9600);
}
boolean connect(USER_SSID,USER_PASS)
{
softSerial.println( ".sta.config(\"");
softSerial.println( ssid);
softSerial.println( "\"");
softSerial.println( ",");
softSerial.println( "\"");
softSerial.println(pass);
softSerial.println("\")");
}
#包括
软件系列软件系列(5,6);
void setupCon()
{
softSerial.begin(9600);
}
布尔连接(用户\ SSID,用户\通行证)
{
softSerial.println(“.sta.config(\”);
softSerial.println(ssid);
softSerial.println(“\”);
softSerial.println(“,”);
softSerial.println(“\”);
softSerial.println(pass);
softSerial.println(“\”);
}
删除1可以解决问题,删除2也可以解决问题。
因此,接线模块上的读取功能似乎会导致以后无法再连接软件串行
我们真的迷路了,所以任何方向都很好。
谢谢。有什么东西正在设置DTR并导致它重置(就像应该的那样)谢谢,但这意味着什么?我应该如何处理这一信息和平???对不起,让我更清楚一点。DTR重置仅适用于从PC打开com端口的情况。如果不是这种情况,您可以忽略以下内容:)
\define to_READ(6)
和readFrom(设备,0x30,
8,buff)代码>不匹配。很高兴我能帮忙!-我不知道这到底是如何干扰串行库的,但在缓冲区分配的内存之外写入可能会损坏应用程序中任何地方使用的数据,因此可能就是这种情况。