今回はウォッチドッグタイマって何なのか、というお話です。
ある日、ベテラン社員の先輩Aさんのところに、入社3年目の新人B君が、やってきました……
2024年11月28日 公開
教えて先輩!シリーズ 第16回
ウォッチドッグタイマって何ですか?
先輩、この間、リセットIC(ボルテージディテクタ、電圧検出器)を教えていただいたのですが、マイコン監視用IC(スーパーバイザー)にはウォッチドッグタイマもありますよね。何となくわかるのですが、ちゃんと教えてほしいんです。
そうねえ。簡単に説明するとリセットICは電圧を監視しているんだけど、ウォッチドッグタイマはマイコンを監視しているんだよ。
マイコンを監視って、リセットICだって監視しているじゃないですか?
リセットICが監視しているのは電圧だよね。要はマイコンの入力電圧が動作電圧範囲にちゃんと収まっているかを見ているわけだよ。
はい。
でも、マイコンの誤動作の原因って電圧異常だけじゃないよね。
はい?
実際に多いのはプログラムのバグだよ。プログラムがループに入ってしまったり、行ったきりになって戻ってこなかったり、……
なるほど。マイコンのフリーズって電圧低下だけじゃなくプログラムのバグによるものがあるってことですね。
だから、ウォッチドッグタイマが必要なんだよ。プログラムのバグでフリーズしたマイコンを再起動してくれるんだ。
でも、マイコンがフリーズしているってどうやって判断するんですか?動作電圧に異常はないわけですよね。
そう、そこがポイントだよ。
ウォッチドッグタイマからマイコンに信号を送って「大丈夫ですか?」って聞くんだよ。マイコンが「大丈夫です」って返事をすればOKで、返事がなかったらフリーズしているのでマイコンをリセットするってわけ。
はあ。わかったような、わからないような……
風船列車ゲーム(ニードル・トレイン)って知ってる?
いきなり……先頭に針が付いた列車が丸い線路を走るやつですか?
そうそう。線路の途中に風船が置いてあって、列車が来る前にどけないと針で割られてしまうってやつ。
最近見なくなりましたよね……
ウォッチドッグタイマってそれなんだよ。
はい?
列車は一定速度で線路を回ってくるわけさ。列車が来るたびに風船をどかすと風船は割れないよね。
それっていうのは、ウォッチドックタイマが列車で、風船をどかすという行為がマイコンの返事ってわけ。列車が「マイコンさん大丈夫ですか?」と言いながら線路を走ってくるわけだよ。そこでマイコンが「大丈夫です」と風船をどかすとOKってことだよ。
はあ。
しかし、マイコンが「大丈夫です」と返事ができないってことはマイコンがフリーズしているってことなんだよね。
だから風船をどかすことができなくって列車の先についた針で風船を割られてしまうってわけなんだ。つまり、マイコンがリセットされるってことさ。
うーん。マイコンが忙しくって返事する間がないってケースもあるんじゃないですか?
そうだね。だから、そうならないようにウォッチドッグタイマを設定するんだよ。絶対にマイコンが返事できるタイミングで「マイコンさん大丈夫ですか?」って聞かないとだめなんだよ。つまり、線路の長さを正しく設定しないといけないわけ。
これがウォッチドッグタイマの「監視時間」なんだ。CTW端子につける外付けのコンデンサで調整するんだよ。ただ、長くしすぎるとマイコンの異常に気づくのが遅れるわけだから注意が必要だよね。
この「監視時間」の設定って難しいですよね。短すぎるとマイコンが「しつこいんだよ!」って怒りそうだし、長すぎるとマイコンがフリーズしているのにしばらく気が付かないってことですよね。
なので、インヒビット端子(INH端子)があるんだ。これは一時的にウォッチドッグタイマを停止させる信号を入力する端子なんだ。つまり、列車を停止するわけだよね。これと「監視時間」、つまり、線路の長さを組合せてうまくやるわけだよね。
なるほど。マイコンが重い処理をしている間は「ちょっと待ってて」とインヒビット信号をウォッチドッグタイマに送っておくんですね。そうすれば列車が、じゃない、「マイコンさん大丈夫ですね」がストップするわけか。
そういうこと。まあ、製品開発時やソフトウエアのアップデート中、スリープ時に使う機能なんだけどね。
でも、プログラムにバグがあるままだったら問題は解決しませんよね。フリーズして、ウォッチドッグタイマがリセットして、またフリーズしての繰り返しになりませんか?
そうねえ。その場合は修理してプログラムをアップデートするんじゃないかな。
うーん。ウォッチドッグタイマって緊急事態用なんですか?確かにバグのないプログラムを作るのは難しいかもしれないですけど致命的なバグってほとんどないと思います。そこまで必要な感じがしないんですけど。
そうねえ。まあ、人命に関わるとか誤動作が許されない機器ってあるからね。そういう機器には必要だと思うよ。
それに、マイコンの誤動作の原因ってプログラムのバグだけじゃないよね。外部ノイズなんていうのもあるんだ。こっちは対策に限界があるからね。
そんな、マイコンを誤動作させる外部ノイズって……
今は減ったと思うけど、トラックなんかの違法無線とかね。業務用無線機を改造して遠くと交信できるように出力を大幅に増やしていたんだ。その大出力の電波がマイコンを誤動作させたりしたんだよ。
よく言われたのは自動ドアだよ。トラックがビルの前を通ると自動ドアが開く、ってね。自動ドアが閉まらなくなったり、空きっぱなしになったら困るだろ。
確かに。そんなことがあったんですね。
トラックの違法無線が原因だってわかったのは同時にラジオに強力なノイズが入ったからなんだよ。放送が聞こえなくなるほどのね。
なるほどです。今では取り締まりが強化されたってことですよね。ああ、ハンズフリーで電話も出来ますし。スマートフォンが業務用無線機を駆逐しちゃったんでしょうか。
まあ……厳密には無線機と電話機は別物だから。電話は1対1の通話しかできないけど無線は多人数での通信ができるんだ。だから駆逐はされていないよ。警察無線や山岳救助隊の無線とか船舶無線とかいろいろあるんだ。問題だったのは出力を増やした違法無線だからね。そこは間違えちゃだめだよ。
はい。そうですよね。ところで、ウォッチドッグタイマにもウィンドウタイプってありますよね。
ああ、リセットICのウィンドウタイプと同じだよ。リセットICはマイコンの動作電圧の上下を監視しているけど、ウォッチドッグタイマのウィンドウタイプは時間の長短を監視しているんだよ。
ちょっとイメージがわかないんですけど。
さっきの風船列車ゲームで考えればカンタンだよ。列車がまだ風船まで遠い時に風船をどかすのは安全なように感じるけどホントにそうか?ってことなんだ。マイコンが異常でひたすら風船をどかし続けているかもしれないじゃない。
風船列車ゲームの場合は列車が走っている間に何かクイズに答えるとかミッションがあるわけですけど、風船をどけ続けているとそれができないです。そうか、同じようにマイコンが仕事をしていないってことか!
そういうこと。ウィンドウタイプのウォッチドッグタイマはマイコンの「大丈夫です」が遅くてもダメだし、早くてもダメってことなんだ。
わかりました。ありがとうございました。
あと、ウォッチドッグタイマICには普通はリセットIC(ボルテージディテクタ)も入っているからね。
動作電圧も監視しておいた方が安心だろ?
確かに。セットの方がいいです。時間と電圧の両方でマイコンを監視するんですよね。
そうそう。余談だけど、ウォッチドックタイマじゃなくてウォッチドッグタイマだからね。ドッグ(dog)だよ。日本語に訳すと「番犬タイマ」だから。
わかってますって……
あとがき
我々の製品がお役立ちできるような紹介ブログの第16回目です。
本記事で気になったことがあれば何なりとこちらからお問い合わせください。
※ 「教えて先輩!」シリーズはほかにもあります。