1

我很困惑,希望这里有人能提供一些理智。

我有一个相当精细的 Arduino 草图,它在事件中指定的时间响应预定的事件。为了做到这一点,我设置了一个循环来检查事件队列并检查事件时间以查看它是否与当前时间匹配。我在循环中也有代码,用于检查当前温度并发送带有时间戳的串行消息。

我注意到它在崩溃之前不再运行超过 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;
}
4

0 回答 0