工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

ウォッチドッグタイマーを理解する:マイコンのハングアップを防ぐ仕組み

必要な部品と材料

使用するアプリとオンラインサービス

プロジェクト概要

マイコンが無限ループに陥ったり、タスク中にフリーズしたりした経験はありませんか? 通常の対処はリセットボタンを押すことですが、常に人が押せるわけではありません。そこで活躍するのがマイコン内蔵のウォッチドッグタイマー(WDT)です。

「ウォッチドッグタイマー(WDT)は、メインプログラムが定期的にサービス(リセット)しない場合に自動的にシステムリセットを発生させるハードウェアタイマーです。ソフトウェアやハードウェアの故障でハングアップした組み込みデバイスを自動復帰させるのによく使われます。」(os.mbed.com/cookbook/WatchDog-Timer)

「犬にエサをやる」イメージ

家に犬がいるとします。定期的にエサをあげないと噛まれます。ウォッチドッグタイマーも同じです。

ウォッチドッグタイマーを理解する:マイコンのハングアップを防ぐ仕組み

メインループ(loop())が繰り返し実行されるたびにタイマーをリセット(エサやり)します。メインプログラムが何らかの理由でタイマーをリセットできずにカウントダウンがゼロになると、割り込みでプロセッサをリセットします。これでハングアップから保護されます。

Arduino Uno(ATmega328P)でウォッチドッグタイマーを使う

Arduino UnoはATmega328Pを搭載。ウォッチドッグタイマーを使用するには以下のライブラリが必要です。

#include <avr/wdt.h>

ウォッチドッグタイマーの有効化

wdt_enable(WDT_リセット時間);

リセット時間は15ms〜8sから選択可能。

ウォッチドッグタイマーを理解する:マイコンのハングアップを防ぐ仕組み

例:wdt_enable(WDTO_8S); で8秒に設定。

ウォッチドッグタイマーのリセット(エサやり)

wdt_reset();

この関数をloop()内で定期的に呼び出します。delay()がWDTタイムアウトより長い場合は、そのdelay()の直前にもwdt_reset()を入れないとリセットされてしまいます。

ウォッチドッグタイマーの無効化

wdt_disable();

動作例スケッチ

#include <avr/wdt.h>

void setup() {
  Serial.begin(9600);
  Serial.println("Setup started :");
  delay(2000);            // 初期化完了を待つ
  wdt_enable(WDTO_4S);    // 4秒でタイムアウト
}

void loop() {
  Serial.println("LOOP started ! ");
  for (int i = 0; i <= 5; i++) {
    Serial.print("Loop : ");
    Serial.print(i);
    Serial.println();
    delay(1000);
    wdt_reset();          // 1秒ごとにリセット(4秒以内なので安全)
  }
  // 意図的な無限ループでハングアップを模擬
  while (1) {}
}

実行結果

ウォッチドッグタイマーを理解する:マイコンのハングアップを防ぐ仕組み

ループ5回(5秒)後にウォッチドッグがタイムアウトし、リセットがかかって「Setup started :」から再開する様子がわかります。

ご質問・ご意見はコメント欄へどうぞ。

完全なスケッチ

#include <avr/wdt.h>
void setup(){
  Serial.begin(9600);
  Serial.println("Setup started :");
  delay(2000);
  wdt_enable(WDTO_4S);
}
void loop(){
  Serial.println("LOOP started ! ");
  for(int i=0; i<=5; i++){
    Serial.print("Loop : ");
    Serial.print(i);
    Serial.println();
    delay(1000);
    wdt_reset();
  }
  while(1){}
}

製造プロセス

  1. インサート成形解説:多材料生産の効率化とコスト削減
  2. プロトタイピング解説:スタートアップにとっての重要な検証ステップ
  3. リニアモーター理解:電気エネルギーから精密直線運動へ
  4. CNC旋削加工解説:高品質部品のための精密加工
  5. 鋳造所(ファウンドリ)を理解する:金属が現代産業の建設ブロックになる場所
  6. 多段ポンプの理解:機能、用途、メリット
  7. プレスフィーダーの理解:メカニズム、機能、産業用途
  8. 水中ポンプ(サブマーシブルポンプ)の仕組み・種類・メリット・選定基準完全ガイド
  9. 飲料ロボットの技術・自動化・業界役割:バブルティー・コーヒー自動化の最前線
  10. メカニカルプレス解説:機能、種類、産業用途
  11. サーボモーターの仕組みと重要性