Arduino 为什么SD卡停止记录而没有错误?

Arduino 为什么SD卡停止记录而没有错误?,arduino,Arduino,以下是Arduino纳米克隆的草图。它等待一个启动命令,然后从I2C从机收集数据,组装数据以记录在SD卡上,将其写入SD卡,打印到串行监视器并重复。我已经测试了又测试了。SD卡日志文件总是在记录头和30行数据中的3行之后停止,但串行监视器显示所有预期数据。在我的任何测试中都没有生成SD写入错误 对于SD为什么停止日志记录以及如何修复日志记录,我非常感激 阿杜伊诺素描 #包括 #包括 #包括 #包括 //取消注释下面的#define以启用数据的内部轮询。 #定义已启用的轮询 //定义从i2c地址

以下是Arduino纳米克隆的草图。它等待一个启动命令,然后从I2C从机收集数据,组装数据以记录在SD卡上,将其写入SD卡,打印到串行监视器并重复。我已经测试了又测试了。SD卡日志文件总是在记录头和30行数据中的3行之后停止,但串行监视器显示所有预期数据。在我的任何测试中都没有生成SD写入错误

对于SD为什么停止日志记录以及如何修复日志记录,我非常感激

阿杜伊诺素描

#包括
#包括
#包括
#包括
//取消注释下面的#define以启用数据的内部轮询。
#定义已启用的轮询
//定义从i2c地址
#定义I2C_从_地址9
/* ===================================
Arduino纳米连接
ESC(PWM)信号-针脚9(最小1000毫秒,最大2000毫秒)
S.端口信号-针脚10
SPI连接
MOSI=引脚11
味噌=引脚12
SCLK=针脚13
I2C连接
SDA=引脚A4
SCL=插脚A5
启动/停止开关
开始=引脚2=>INT0
停止=引脚3=>INT1
===================================*/  
伺服esc;//ESC的伺服对象-针脚9
常量无符号长暂停=800;//两次读数之间的毫秒数
const unsigned long testDelay=30000;//测试之间的毫秒数
常数int CS_pin=10;//用于电路板上CS(SS)的引脚
常数int Startpin=2;
常数int Stoppin=3;
常数int读数=3;//每一步的读数数量
常数int步数=5;//停止ESC并读取读数的步骤数
常量字节HALT=0;
int-ESC=0;
int节流阀=0;
整数增量;
挥发性bool STOP=0;
挥发性bool START=0;
const String header=“%Thr、推力、电流、电压、转速、Cell1、Cell2、Cell3、Cell4、Cell5、Cell6”;
字符缓冲区0[33];//I2C接收数据缓冲区
字符缓冲区1[33];//I2C接收数据缓冲区
String logEntry=“没有数据”//52字节
无效设置(){
Wire.begin();
序列号开始(115200);
pinMode(启动输入,输入/上拉);
pinMode(停止、输入和上拉);
//将中断附加到ISR向量
连接中断(数字插针中断(Startpin)、启动中断、低电平);
连接中断(数字插针中断(停止),停止ISR,低电平);
esc.附件(9,1000,2000);
//将针脚9上的ESC连接到伺服对象,并设置最小和最大脉冲宽度
esc.写入(停止);//立即关闭电机!
增量=180/(步骤-1);
//每一步移动伺服(ESC)的度数(伺服行程为0-180度,因此180=100%油门)
延迟(500);
串行打印LN(“推力计I2C主控”);
//打印程序名
//初始化SD卡
如果(!SD.开始(CS_引脚)){
Serial.println(“卡故障”);
}
Serial.println(“卡就绪”);
//将日志文件头写入SD卡
写入(标题);
Serial.println(标题);
}
void循环(){
如果(启动){
Serial.println(“开始按下”);
当(!停止){
对于(油门=0;油门=0;油门-=增量){
对于(int x=0;x而(millis)这个问题的解决方案是用一个更快的SD卡替换SD卡。一旦我这样做了,数据就会被记录下来。谢谢Patrick的建议。

如果你让日志文件一直打开,它会工作吗?好主意。只是尝试了一下。同样的结果。太糟糕了。我真的认为你可能会有一些东西。谢谢你的建议。这是一个好主意请按ess推断发生了什么。这里还有一些。您如何读取
SD
文件以显示其内容?ls-la文件名
ls-la文件名
表示wrt。文件长度?cat-A文件名显示了什么?如果每次写入不同的文件会发生什么?您是否尝试用另一个文件替换
SD卡
r one?我就是这么做的。我在循环的顶部打开日志,并在测试运行结束时关闭它。应该有31行,包括标题,但仍然只有4行。条目之间大约有一秒钟的间隔。写入之间应该有足够的时间。我关闭Nano,将卡放入Mac,然后用OpenOffice o读取内容r一个文本编辑器。我在同一个文件中做了多次操作。删除并重新创建了该文件。结果总是一样的。我将尝试一个新的更快的卡,只需吹走上面的覆盆子Pi操作系统。