マイクロコントローラにウォッチドッグがあり、蹴られないとプロセッサがリセットされます。私のアプリケーションはしばらくは正常に動作しますが、ウォッチドッグが蹴られなかったために最終的にリセットされます。私がプログラムをステップ実行すればうまく動作します。ウォッチドッグタイムアウトをデバッグする方法
これをデバッグする方法は何ですか?
編集: 結論: 私のバグを見つけたのはウォッチドッグブレッドクラムです。
高いISRベクトルと低いISRベクトルを持つPICを使用しています。ハイベクトルはLEDマトリックスを扱うと考えられ、ローベクトルはタイマーティックを処理するためのものでした。しかし、私は両方のISRハンドラを高ベクトルに入れました。したがって、LEDマトリックスISRを無効にし、ISRのサービスが必要なタイマーティックISRでは、プロセッサーはタイマーティックを処理するために低ISRでスタックされますが、タイマーティックハンドラーはそこにはありませんでした。
ブレッドクラムは、私の検索をLEDマトリックスを処理し、特にLEDマトリックス割り込みを無効にした機能に限定しました。二回
ここに来る人を追加するだけです: "初期化されていないグローバル変数"は、Cコンパイラでいくつかの特別なセマンティクスが必要です。標準によれば、値が割り当てられていないグローバル変数でさえ、ゼロに初期化されなければならないということです。だから、典型的には、例えばこれらの変数の属性が必要である。 avr-gccの ".noinit" – FourtyTwo