ウォッチドッグタイマーに対するこれらのアプローチのどれですか?


8

私は最近ウォッチドッグタイマーについて学び、ハングした(つまり、ウォッチドッグに応答しない)場合に(AVR)マイクロコントローラーをリセットする目的で回路にタイマーを実装しようとしています。

いくつかの調査に基づいて、約4つのオプションがあるように私には思われます。

  1. マイクロコントローラーを外部のウォッチドッグタイマー専用の専用ICに接続します。
  2. マイクロコントローラーを追加のマイクロコントローラー(いくつかの非常に基本的で安価なもの)に接続します。後者は、ウォッチドッグタイミング専用の目的のためにコード化されています。
  3. 独自の555タイマーベースのウォッチドッグ回路をレイアウトし、それをマイクロコントローラーに接続します。
  4. マイクロコントローラーの内部ウォッチドッグタイマー機能を使用します。

上記のアプローチのどれを上位にランク付けしますか、そしてその理由は?

残りのデザインとコードの作成方法に関する特定の基準に基づいて、ウォッチドッグ時間を約6秒に設定したいと思います(デバイスは、バッテリー駆動の定期的な温度ロガーになります)。

少し注意:私の好みはオプション1ですが、簡単にするために、私が見つけたカップルに基づいて、これらの部品は高価に見えるか(せいぜい1.25 USD未満のソリューションが欲しい)、またはそれ以下しか許可しないウォッチドッグのタイミング期間は2秒より長くなります。


1
4)安価でシンプルです。あなたの反対はあなたがそれを6秒に設定できないことだけですか?これは、マイクロコントローラ標準ではかなり長い時間です
pjc50

1
@ pjc50:絶対に安いです:)そして、6秒のタイミングでさえ可能だと私は信じています。ただし、このような記事は、内部ウォッチドッグは専用の外部ウォッチドッグほど堅牢ではない可能性があることを示唆しています。そして、6秒の理由は、私のマイクロコントローラーで、最初の起動時に4秒の待機時間を含むArduinoブートローダーを持っているためです。(私はこれを再プログラムすることを学ぶことができましたが、それはまだ私の学習曲線上にあります)
boardbite

1
必ずブートローダーを修正してください。4秒間待機することで、4秒間のバッテリー消費量を節約できます。待機する代わりに、たとえば、展開時にプルダウンされる専用ピンをサンプリングしてください。
Igor Skochinsky

回答:


14
  1. あなたがすでに知っているように、より高価です。しかし、それはあなたに最高レベルの信頼性を与えるはずです:ウォッチドッグはマイクロコントローラーから完全に独立しているので、それは実行を続け、後者が発火しているときにマイクロコントローラーをリセットします。4を参照)
  2. ブライアンはそれに反対していますが、SOT-23のPIC10F200のような小型パッケージの安価なマイクロコントローラーがあり、これはウォッチドッグが実際に使用している再トリガー可能なMMV(単安定マルチバイブレーター)として使用できます。555を検討する場合、10F200の方が優れています。外付け部品がなく、タイミングがより正確です(1%の精度)。
  3. 555?マジ?
  4. 専用ICが高すぎる場合は、内部ウォッチドッグが行います。本当に偏執的である場合は、ハードウェアエラーによってマイクロコントローラーとウォッチドッグがロックされるシナリオを考えることができます。私はこれが起こることを知りませんでしたが、あなたがどれほどよく眠るかはわかりません。

同様pjc506秒は長い時間だと言います。典型的なマイクロコントローラーは、その間に数千万の命令を実行するため、多くの問題が発生する可能性があります。PWMで負荷を制御していて、10%の低いデューティサイクルで消費電力を低く抑えているとします。マイクロコントローラがバナナになり、出力が100%の高デューティサイクルでスタックします。荷物が気に入らず、死にました。あなたはそれが起こるのを6秒待ったくありません。より多くの頻度を渡すコードの一部があるはずです。メインループが10ミリ秒と短い場合、たとえば、ウォッチドッグのタイムアウトを100ミリ秒に設定できます。犬を10ミリ秒に1回蹴る場合、タイムアウトは10回逃したことを意味します。一度は大丈夫ですが、10回は災害であり、行動を起こす必要があります。負荷は6秒ではなく100ミリ秒後にオフになります。


2
@Nick-気に入ってくれてうれしいですが、実際に残りの回答を書くのにもっと時間をかけました:-)。
stevenvh

1
555タイマーの何が問題になっていますか?:)
ジャスティン

3
@ジャスティン-555が信仰している人がいます:あなたはすべての世界の問題を解決し、次に555でいくつか解決することができます。すべて。で、この質問/回答 OPのために作られていないタスクのための555の回路を設計するために数週間を過ごします。同じジョブを1時間でマイクロコントローラーにプログラムできます。ここではOPのスキルや彼のアプローチに疑問を投げかけていません。理解するに、彼 555を使用する必要があることを理解してます...
stevenvh

2
誰かが「絶対に」のような言葉を使うたびに、反例を見つけるように強いられます。この場合:マイクロコントローラーは555よりも宇宙線や放射線に敏感であるため、一部のアプリケーションではIMOが信頼性の観点から555に適しています。
apalopohapa 2012年

2
@apalopohapa-私は正しい立場だ。宇宙船では、マイクロコントローラよりも555の方が良い選択かもしれません。もちろん、555で作られたコンピュータは(推定)15桁精度が低く、より大きく、より多くの電力を必要とし、C ++またはAdaでのプログラミングはそれほど簡単ではありません... :-)
stevenvh

5
  1. ウォッチドッグタイマーはシンプルで、機能し、安価です。不明な選択。
  2. 追加のマイクロコントローラーはやり過ぎです。プログラムする必要があるため、役に立ちません。より高価で、より多くの面積が必要です。
  3. 意味あり。しかし、代わりに1を実行します。より近代的な。
  4. うまくいけばこれを使います。彼らは唯一の質問はそれが6秒に設定することができるということです。

比較していただきありがとうございます。ただし、#1は安くはないようです。私が述べたように、1ドル未満の数量価格のウォッチドッグタイマー対応ICは見つかりませんでしたが、おそらくご存知のように、USD 0.50未満の多くのマイクロコントローラー(オプション#2用)があります。
ボードバイト

2

回路/デバイスが生命にかかわるハードウェアを制御していない場合は、おそらく内部のウォッチドッグを使用して回避できます。それ以外の場合(または実際には、いずれにしても)、Jack Ganssleによる次の2つの素晴らしい記事をチェックしてください。

http://www.ganssle.com/watchdogs.htm

http://www.ganssle.com/articles/watchdogsredux.htm

ちなみに、ウォッチドッグを長い間隔に設定できない場合は、ウォッチドッグをキックするのに十分な頻度でウェイクアップするアプローチを試すことができますが、測定を行ったり、ログを書き込んだりするのはたまにしかありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.