ウオッチドッグ・タイマーで失敗!
マイコン制御機器のプログラム開発、最終版に近づいてくるとあれこれ過酷なテストを繰り返します。
ひとつが「ウォッチドッグ・タイマー」の検証。
「ウォッチドッグ・タイマー」を定期的に再トリガーしないと、マイコンがリセット起動するという暴走対策です。
異常事態が起きた時、これがちゃんと動くかどうかも検証しておかなくちゃなりません。
※プロセッサ誌1989年6月号にレポートした
「ストロボでマイコンが暴走した!?」
・http://act-ele.c.ooco.jp/toukou/toukou1.htm
・http://act-ele.c.ooco.jp/toukou/processor/proc198906.pdf
これ、故意に暴走させる良いトリガーでした。
ただし、紫外線消去の窓付きEEPROMでしか使えません。
※キセノン・デス・フラッシュと呼ぶようです。
・http://www.neko.ne.jp/~freewing/raspberry_pi/raspberry_pi_3_xenon_death_flash/
ウオッチドッグに絡んで、「あれれ?」な事態に遭遇しました。
デバッグ用としてマイコンの内部状態情報をシリアル出力していました。
1秒周期の状態出力と外部イベントが発生した時の情報の二つです。
動作検証のため、イベント発生の間隔をどんどん短くして、マイコンの内部処理に負荷をかけた時です。
「ウォッチドッグ・タイマー」が働き、マイコンがリセットしてしまったのです。
タイミングにまだまだ余裕があるはずの処理です。
しかし、同じことを繰り返すと再現性があります。
どこかの処理がスカタンしているのか、メモリーを食っているのか・・・
ウォッチドッグ・タイマーが働く原因が分かりません。
状態はイベント周期の違いだけ。
原因は・・・
デバッグ用に出力していたシリアル出力でした。
文字出力のためのバッファがいっぱいになり、出力完了待ちが生じていたのです。
通信ボーレートを昔ながらの「9600BPS」で行っていたのが、バッファ詰まりの原因。
イベント周期が早くなると、出力する文字数が増えます。
文字送出が間に合わなくなると送信電文がバッファに溜まります。
それががいっぱいになると、出力完了待ちが発生。
その待ち処理部分ではウォッチドッグを叩いていなかったのでリセットが発生したという次第。
出力文字バッファが一杯の時、バッファが開くまで待つか、出力しようとしていた文字を捨てるか悩むところです。
デバッグ用なら、「捨てたよ」をマークして、その行全部を捨ててしまう処理かと。
| 固定リンク
「トラブル遭遇」カテゴリの記事
- 歯医者の残物:ヘッドランプ(2025.12.29)
- 24クリックのロータリーエンコーダ、調子が悪くなり交換(2025.11.20)
- MADE IN USAでも信じるな!(ミノムシクリップの話)(2025.11.11)
- 8文字×2行のI2C液晶表示器に注意(2025.10.21)
- ATtiny1614につないだ32kHz水晶発振子、隣のピンの影響を受けるみたい(2025.10.06)
「電子工作」カテゴリの記事
- ひさしぶりのイベントだったけど・・・「ピコピコ・スイッチ」破損(2021.12.13)
- 顕微鏡用LEDリングライトのLED、そろそろ交換か(2021.09.27)
- 可変抵抗器の「陽極酸化」(2021.09.22)
- 弾帯状になったQIコネクタのコンタクトピンを・・・(2021.08.27)
- AD620を使った計装アンプとシミュレーテッド・インダクタを使ったノッチフィルタ(2021.08.16)


コメント