我非常困惑,并希望这里有人可以提供一些理智。
我有一个相当精细的Arduino草图,它响应预定的事件 在活动中指定的时间。为了做到这一点,我设置了一个循环来检查事件队列并检查事件时间以查看它是否与当前时间匹配。我还在循环中有代码来检查当前的temp并发送带有时间戳的串行消息。
我注意到它崩溃前不再运行超过10-15分钟(沉默)。我认为这是我的一些代码,所以我开始评论碎片,直到它再次开始工作......我惊讶地发现它只是在我取消对setTime()的调用之后才开始工作(运行了14个多小时)!
我无法理解对setTime()库函数的调用如何在10分钟后导致崩溃。我认为这是一个非常稳定的图书馆...
欢迎任何想法!
if(timeStatus() != timeSet) {
if (processSyncMessage()) {;
Serial.println(F("Time sync completed.\n"));
}
else { // Time sync failed for some reason, resend request.
Serial.println(F("Waiting for sync message\n"));
}
}
else { // time is set.
...
我已经“简化”以下例程以删除序列消息收据并进行解析以进一步隔离问题......
int processSyncMessage() {
// if time sync available from serial port, update time and return true
Serial.println(F("Processing time sync message"));
time_t pctime = 1371118147;
setTime(pctime); // Sync Arduino clock to the time received on the serial port
return true;
}