回答:
ウォッチドッグタイマー(WDT)はデフォルトでオンになっています。より複雑なアプリケーションで使用すると便利ですが、多くの新しいユーザーがトリップします。多くの場合、彼らはコード内でWDTを処理しないか、WDTイベントを処理するための割り込みサービスルーチン(ISR)を含まないため、チップがリセットし続けると非常にイライラします。さらに、サンプルプログラムは、ほとんどの場合、WDTをデモンストレーションしようとしていないため、オフになっています。
編集:ウォッチドッグタイマーは「デッドマンズスイッチ」と名付けられたかもしれません。デフォルトの動作は、ファームウェアが定期的にすべてが正常に実行されていることを通知しない限り、マイクロコントローラーをリセットすることです。これは「犬に餌をやる」または「犬を蹴る」として知られています。このように、ファームウェアがループでスタックしたり、予期したとおりに動作を停止した場合、ウォッチドッグは給電されず、チップをリセットします(できれば新しい動作状態にリセットします)。
また、WDTを定期的な割り込みとして使用して、想像できる他のタスクを実行することもできます。関連するISRを記述するだけです。
人が誤ってWDTをトリップするというサミュエルの主張に加えて、最初に無効にする必要がある別の重要な理由があります。
アプリケーションが通常タイマーを正しくリセットできる場合でも、2つの理由から、初期化コード中にタイマーをリセットできない場合があります。
そのため、最初に行うこととしてWDTを無効にすることをお勧めします。 有効にしていない場合でもます。
使用したい場合は、初期化コードの最後のステップとして、割り込みをオンにする直前に再度有効にすることができます。
int _system_pre_init(void)
する前に実行される機能を、main