リセット回路.

マイコンのハードエンジニアであれば絶対に避けて通れないのが、リセット回路です.マイコンの生き死にを左右するわけですから、いうなればマイコンシステムで一番えらい回路なのです.
で、どんな回路使いますか?
自作のちょろっとした回路なら、CRでVccの時間遅らせて、放電はダイオードですか.

ちょっとしゃきっとした回路ともなると、リセット専用ICなるものを使います.
リセット回路というのは、古来(本当に昔の話です)、オープンコレクタLowアクティブのワイヤードOR回路と相場が決まっていました.
オープンコレクタですから、Vccに対するプルアップ抵抗が必要になります.しかし、LowアクティブのワイヤードORですから、リセット回路が複数あった場合にも、誰かがリセット信号を出し続ければ、リセットは成立するのです.全員がリセットを解除しなければ、おおもとのリセットは解除されません.

さてここで、リセットICを実装しわすれた場合、あるいは、リセット配線がきちんとつながっていなかった場合はどうなるでしょうか.信号はオープンですから、リセット解除と同じ条件になります.
つまり、Vccの上昇に合わせてリセット信号の電位も上がっていき、Vcc確定とほぼ同時にリセットが解除されてしまうのです.こういう時ってマイコンはどう動くのでしょうか.

当然、マイコンのデータシートには、そのような状態が起こらないように、電源立ち上げ後、クロック数でいくらかの時間を置いてリセット信号を解除してくださいと記述されており、それ以外の状態での動作は不定となっています.
でも実際は、クロック発振回路は、規定電圧のはるか下の電圧から発振を開始し、電源立ち上がりとリセット解除が同時期であっても、ほとんどの場合は正常に動いてしまうのですよね.
これが大きな落とし穴です.

ほとんどちゃんと動くんだけれども、時々おかしな動きをすることがある、こういう症状がデバッグをしていて一番原因をとらえにくい症状です.リセットの接触不良なんて、とんでもなく捉えにくい症状です.

まあ基本は、Vccは正常か、クロックは発振しているか、リセットは解除されているか、アドレスバス、RD/WR信号は出ているか、これくらい確認すれば、ソフトの端くれ程度のものは動かすことが出来ると思いますので、ここからは、ソフトとハードを組み合わせた効率的なデバッグが出来ると思います.

しかし、マイコンシステムが、自分自身のリセット回路が正常に動作しているか完全に確認する方法ってあるんでしょうか.オープンパンダとか、ICの未実装とか、経年劣化によるハンダクラックとかそういうのも含めて.