ウォッチドッグタイマーとは?
仕組みや回路図、主な機能とエプソンのWDTの使い方を解説

マイコンのウォッチドッグタイマ(WDT)とは?わかりやすく解説

ウォッチドッグタイマとは?

ウォッチドッグ(watchdog)を訳すと“番犬“ということになります。玄関先で不審者が来ないか見張っている犬です。ウォッチドッグタイマとは、“番犬”のようにシステムを監視し、システムが誤動作を起こしていると判断した場合は、システムリセットや割り込みなどを発生させるタイマです。 本文では、マイコンを中心としたシステムのウォッチドッグタイマについて解説します。

番犬のイメージ

番犬のイメージ


マイコンの誤動作について現象面から分類すると、データ異常、動作異常の2つがあります。


データ異常

  • マイコン内レジスタやRAMデータが異常値になる。
  • 演算処理結果が異常値になる。

動作異常

  • CPU内プログラムカウンタが変化して、予期しないアドレスに移行する。
  • マイコン内レジスタやRAMのデータが異常値になり、この値を参照したプログラムカウンタも異常値になる。
  • 演算処理結果が異常値になり、本演算結果を参照したプログラムカウンタも異常値になる。

また、マイコンの誤動作について要因面から分類すると、ハードウェアの不具合、ソフトウェアの不具合、環境変化の3つがあります。

ハードウェアの不具合

  • マイコンの回路上の課題
  • マイコンの製造上の課題
  • マイコンの経時変化などによる特性変動

ソフトウェアの不具合

  • ソフトウェア仕様上の課題
  • ソフトウェア評価上の課題

動作環境に原因がある場合

  • 動作電源不安定
  • ノイズ干渉

ウォッチドッグタイマの仕組み

ウォッチドッグタイマにおける誤動作の判定方法

実は、マイコンが誤動作しているか、そうでないかの判断はとても難しい問題です。人間が製品を使用して感覚的に正常動作・誤動作を判別できたとしても、マイコン自身が判断することは、非常に難しいことです。 ウォッチドッグタイマでは、時間制限のある簡単な作業をマイコン内のソフトウェアに実行させ、制限時間を守れなかった場合を誤動作と判断し、システムリセットや割り込みを発生します。もちろん、本来の目的とする処理も並行して実行します。 この方式では、全レジスタや全RAMデータを監視することは難しく、「動作異常」は検知しても「データ異常」については、検知しにくい面があります。


マイコンにおける異常 現象別

マイコンにおける異常 現象別


また、誤動作要因のうち、そもそもハードウェア・ソフトウェアに原因がある場合は、マイコンが実行する「時間制限のある簡単な作業」の動作自体に、疑念が生じますので、これらの要因については予め排除すべき事項です。*


MCUにおける異常 原因別

マイコンにおける異常 原因別


ウォッチドッグタイマの意義

ウォッチドッグタイマの誤動作検出機能は完璧なものではありませんが、通常、発生しないような使用環境の変化(電源不安定、ノイズ干渉)があった場合でも、可能な範囲で正しい状態に復帰するといった意義があります。 例えば、マイコンを使用した製品について、外来ノイズを受けて動作がフリーズしてしまうような場合でも、ウォッチドッグタイマを使用すれば、システム自らで再起動する可能性が高まります。但し、システムリセットで再起動となった場合は、継続した動作は期待できません。時計の場合ならば0時00分に戻ってしまいます。また、割り込みで再起動となった場合、初期化はされないものの、レジスタやRAMデータが破壊されてしまっていることも十分考えられます。本復帰方法で不都合がある場合は、マイコンの誤動作自体を発生させないように対策をとる必要があります。


*1 ハード・ソフトウェア自体の不具合により意図しない動作をする場合も、ウォッチドッグタイマによる検出対象になり得ますが、本文では、ハード・ソフトウェアは正しいものとして話を進めます。

ウォッチドッグタイマの回路

回路構成

例えば、時計などの原振としてよく用いられる32.768kHzのクロックを入力し、128分周、さらに1,024分周する回路を構成します。128分周で256Hzのクロックを得て、さらに1,024分周することにより1/4Hzのクロックになりますので、4秒周期でオーバーフローを出力することが可能です。このオーバーフローの出力をマイコンのシステムリセットや割り込み信号とします。

一般的なウォッチドッグタイマのブロック図例

一般的なウォッチドッグタイマのブロック図例

システムリセット信号を発生するウォッチドッグタイマの場合、32.768kHzの信号は絶えず入力されていますので、何もせず放置すると、約4秒後にはシステムリセット信号が入ってしまい、マイコン自身が初期化されてしまいます。このような事態が発生すると、マイコンにおける本来の目的が果たせなくなってしまいますので、ウォッチドッグタイマ内の10ビットカウンタを4秒以内にクリア*してシステムリセットを阻止します。

制約事項

一定の周期でカウンタのオーバーフローが発生するので、その時間内にカウンタをクリアする動作がウォッチドッグタイマの基本動作になります。もし、マイコンの誤動作により、以下の現象が発生したらどうなるでしょうか。

  • ソフトウェアが誤動作をして、カウンタのクロックを止めてしまった。
  • ソフトウェアが誤動作をして、カウンタのクリアをかけ続けている。

これらの場合は、カウンタのオーバーフローが発生しないので、ウォッチドッグタイマによるシステムリセットや割り込みは発生しません。但し、各メーカのマイコンともいくつかの工夫があり、クロックを止める場合は特定の手続きをしないと停止できないことや、カウンタをクリアする場合は、特定の条件下でないとクリアできなどの対策はあります。

*2 本文では、理解を容易にするためにマイコンの初期化動作を「システムリセット」と呼び、ウォッチドッグタイマのカウンタを初期化することを「クリア」と呼ぶことにします。

内部ウォッチドッグタイマと外部ウォッチドッグタイマの種類

内部ウォッチドッグタイマとは?

近年、ほとんどのマイコンには、ウォッチドッグタイマが搭載されていますので、マイコンを用いたシステムの場合は、内部ウォッチドッグタイマを使用するのが一般的です。

外部ウォッチドッグタイマとは?

ウォッチドッグタイマを搭載していないマイコンの場合や信頼性を求めるのであれば、外部ウォッチドッグタイマを選択する方法もあります。原理的にはマイコン内蔵ウォッチドッグタイマと同じですが、マイコンとは独立して動作しますので、信頼性は高いと言えます。但し、コストアップの要因となります。

内部と外部ウォッチドッグタイマのメリット・デメリットの比較

内部ウォッチドッグタイマと外部ウォッチドッグタイマを比較し、表にまとめると以下のようになります。

WDT種類 メリット デメリット
内部

コストはかからない。
基板実装スペースが節約できる。

マイコンが誤動作した場合、WDTは正しく機能しないこともある。
外部

マイコンが誤動作した場合、高い確率でWDTが機能する。

コストがかかる。
基板実装スペースが必要。

内部と外部ウォッチドッグタイマのメリット・デメリットの比較

ウォッチドッグタイマの主な機能

ウォッチドッグタイマの基本的な構成要素は、以下の通りです。

一般的なウォッチドッグタイマのブロック図例

一般的なウォッチドッグタイマのブロック図例

  1. ① 分周回路
    原振を分周し、一定のクロックを出力する回路です。ここでは32.768kHzを入力し、256Hzを出力します。
  2. ② カウント回路
    入力されたクロックをカウントし、所定の時間を計測する機能です。ここでは256Hzを入力し、4秒を計測します。
  3. ③ WDTクリア回路
    システムリセットや割り込みの発生を阻止するため、カウンタをクリアする機能です。

ウォッチドッグタイマの注意点

ウォッチドッグタイマの基本的な注意点をまとめると、以下の通りです。

  • ウォッチドッグタイマは完璧ではない
    「時間制限のある簡単な作業」ができたかどうかで、誤動作を判断していますので、誤動作を検出できない場合もあります。もちろん、外部ウォッチドッグタイマの使用や内部ウォッチドッグタイマでも回路構成を複雑化にすることにより、信頼性は高まりますが、コストへの影響やソフトウェア開発の手間も無視できません。
  • ウォッチドッグタイマのカウンタをクリアするタイミングに気を付ける
    基本的なソフトウェアの流れとしては、一定の時間内にウォッチドッグタイマのカウンタをクリアすることから、タイマ割り込みに同期してカウンタをクリアするとソフトウェア処理が容易になります。しかし、タイマ割り込み処理はハードウェアによる動作のため、タイマ割り込みに同期してカウンタをクリアすると、安定して割り込みが発生する可能性が高く、誤動作時でもカウンタがクリアされる恐れがあります。そのため、なるべくソフトウェア走行中に不特定のタイミングで、カウンタをクリアするように心がける必要があります。
  • ウォッチドッグタイマのクロックは停止しない
    一時的でもウォッチドッグタイマのクロックは停止しないことです。例え、通常走行しないプログラムエリアにクロックを停止するソフトウェアが配置されていたとしても、誤動作発生時は、そのルーチンを実行してしまう恐れがあります。

エプソンのマイコンに内蔵されているウォッチドッグタイマ

エプソンのマイコンに内蔵されているウォッチドッグタイマの主な特長

主に2種類のウォッチドッグタイマ“WDT”と“WDT2”があります。

WDT
WDTはシステムリセットだけを行うタイマであり、また、10ビットカウンタの開始・停止とカウンタのクリア機能が備わっています。

エプソン製S1C17W22/23に搭載されているウォッチドッグタイマ(WDT)

エプソン製S1C17W22/23に搭載されているウォッチドッグタイマ(WDT)

WDT2
WDTと比較して、比較器を用いたコンペアマッチによるシステムリセットやNMI*3の発生機能が追加されています。

エプソン製S1C17M40に搭載されているウォッチドッグタイマ(WDT2)

エプソン製S1C17M40に搭載されているウォッチドッグタイマ(WDT2)

①のクロックジェネレータでは、ウォッチドッグタイマのクロック源を発生します。本回路の動作クロック(CLK_WDT)は、概ね256Hz程度に調整されたクロックが入力されることを想定しており、これを②の10ビットカウンタでカウントアップすると4秒周期でオーバーフローが発生します。③のWDTRUNはカウンタの動作/停止を制御し、また、WDTCNTRSTはカウンタのクリアを行うレジスタです。これらのレジスタはソフトウェアにより書き込みを行うことが可能で、10ビットカウンタが所定の時間内にクリアされなかった場合は、システムリセット(WDT2ではNMI*3も選択可能)が発生します。動作の詳細については、機種毎に用意されたテクニカルマニュアルを参照してください。


*3 NMI(ノンマスカブルインタラプト)
マスクできない割り込み。一般的には優先度や緊急度が高い割り込みに設定されることが多い。

エプソンのマイコンの概要とラインアップ

エプソンは16ビットマイコンであるS1C17Familyと32ビットマイコンであるS1C31Family(Cortex-M0+)の2つのコアラインナップを展開しています。また、現在リリースしている全機種にウォッチドッグタイマを搭載しています。

エプソンマイコン概要

エプソンマイコン概要


エプソンマイコンのシリーズ展開

エプソンマイコンのシリーズ展開


エプソンのマイコンに内蔵されているウォッチドッグタイマの使い方

エプソン製マイコンにおけるウォッチドッグタイマ(WDT2)の使用手順について、フローチャートを用いて説明します。

「WDT初期化&開始」は初期時に1回だけ動作させます。また、「WDTカウンタクリア処理」は、本来の目的とするソフトウェア動作の合間に入れ込み、ウォッチドッグタイマのカウンタがオーバーフローするまでにクリアします。


WDT2の制御フローチャート(WDT関連処理を黄色で色分け)

WDT2の制御フローチャート(WDT関連処理を黄色で色分け)


上記各処理の詳細は以下の通りです。

動作クロック設定

  1. システムプロテクト*4を解除
  2. クロックソースが停止している場合は、クロックジェネレータでクロックをイネーブルにする。
  3. クロックソースの選択
  4. クロック周波数の設定
  5. システムプロテクトを設定

動作開始設定

  1. システムプロテクトを解除
  2. WDT2動作クロックを設定
  3. WDT2動作モード(NMI/リセット)を選択
  4. WDT2発生周期を設定
  5. WDT2カウンタをクリア
  6. WDT2を起動
  7. システムプロテクトを設定

カウンタクリア処理

  1. システムプロテクトを解除
  2. WDT2カウンタをクリア
  3. システムプロテクトを設定

*4 エプソン製マイコン(S1C17/31Family)において、特に重要なレジスタを容易に書き換えられないようにプロテクトする機構。特定のレジスタに、特定のコードを書き込むことによりロックと解除が可能。