

spresenseにて長期間計測装置を作りたいと考えております（メインボード＋LTE拡張ボード）。現在、不定期にフリーズしている問題点が残っており、watchdog監視に挑戦中ですがうまくいかず苦戦しています。  
watdchdog以外に、spresenseを強制リセットする方法を模索しています。

拡張ボードでは、リセットピン用意されていますが、LTE拡張ボード使用時に、ハードリセットをする方法があればご教授いただきたいです。また、マイコンの死活監視について、参考サイトや方法などございましたらご教授いただきたいです。


CC BY-SA 4.0
2022-07-14T05:37:30.863
89967
2022-07-15T08:00:54.030
48658
question
spresense
spresenseの自動リセットについて


ARM系のCPUであればシステムリセットの命令があったりしますが、それをどうするつもりでしょうか。  
フリーズしているのを検出するのは、外部回路（例えばWDT）がないと不可能です


CC BY-SA 4.0
2022-07-14T08:47:18.983
89973
2022-07-14T08:47:18.983
27481
89967
answer


すでに試されているかもしれませんが、Spresennse Arduino Library であれば [Watchdog
ライブラリ](https://developer.sony.com/develop/spresense/docs/arduino_developer_guide_ja.html#_watchdog_%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA)を使うことができます。サンプルのコードそのままですが、次のように簡単に使えるので便利ですよ。

[code]

    #include <Watchdog.h>
    
    #define BAUDRATE                (115200)
    
    void setup() {
      Serial.begin(BAUDRATE);
      Serial.println("reset!!");
      Watchdog.begin();
    }
    
    void loop() {
      static int delay_ms = 1000;
      Watchdog.start(2000);
    
      Serial.println("Sleep " + String(delay_ms) + "ms");
      usleep(1000 * delay_ms);
    
      /* Check remain time for watchdog bite */
      Serial.println(String(Watchdog.timeleft()) + "ms left for watchdog bite");
    
      /* Kick a watchdog */
      Serial.println("Kick!");
      Watchdog.kick();
    
      /* Increase wait time */
      delay_ms += 100;
    
      /* Stop a watchdog */
      Watchdog.stop();
    }
    
[/code]


CC BY-SA 4.0
2022-07-15T08:00:54.030
89999
2022-07-15T08:00:54.030
27334
89967
answer