コンピュータを動かす時まず最初にすることはリセットです。
これはコンピュータを初期状態から動かす時に使うもので、ハードウェアから
含めて、全てを初期化してからプログラムの実行を開始します。
【リセット】
コンピュータのハードウェアは一般的に電源が投入されたときと
外部リセット信号が入った時に 内部回路を全て初期状態にします。
この初期状態とは何かというと、
@ プログラムカウンタを0にする。
A 内部で持っているコンピュータの状態、命令の実行結果状態などの
状態 をあらかじめ決められた状態に戻します。
B タイマや入出力ポートをあらかじめ決められた状態に戻す。
C 割込みを全て禁止状態にする。
【パワーオンリセット】
リセット関連で難しくて常にトラブルの種になるのは、電源をON/OFFする
ときの問題です。
まず、電源がONになったときに自動的にコンピュータがスタートする様に
するには、電源が入ったとき確実にリセットがかかるようにすることが必要
です。
そうしないと、電源が安定な規定電圧に達するまでの短時間に、コンピュ
ータが不安定な動きをしたり、動かなかったりしてしまいます。
これを下図で説明すると、電源がONとなってコンピュータの動作保証電圧
になるまでには、ほんの一寸ですが時間がかかります。
(数100μsec〜数msec)。
従って電圧がこの動作保証電圧を超えるまで、リセット信号を継続させて
プログラムが走り出さない様にしておき、十分安定な電圧となった所で
リセット信号を解除してプログラムの実行を開始するようにします。
【PICの電源ONリセット】
PICの場合、このための回路が「パワーオンリセット(POR)」として内蔵
されており、72msecの間、リセット信号が内部で自動的に継続するように
なっています。
これを図示すると下図のようになります。
まず電源がONし、内部でONを検出すると、そこから電源ONタイマが動作
開始し、72msec待ちます。その後さらにクロック発振回路が安定するのを
待つため、1024xクロック幅だけ遅らせた後、内部リセット信号が解除さ
れ、やっとプログラムが開始することになります。
このクロック発振の安定化というのは、水晶やセラミック発振回路が発振
を始めたとき、直ぐには、安定な発振状態にはならず、徐々に発振振幅が
大きくなって安定するという特性があるため、その安定までの時間を待つ
ために遅れの時間を作っています。
図 PIC16F84のPower On Reset Timing
【電源降下対策】
コンピュータが動作中に、突然電源が切れたり低下したとき、確実に
コンピュータを止めることも重要です。
このためには、電源が降下する間に早めにリセットをかけて、コンピュ
ータが不安定な動作をして余計な信号を外部に出したりすることが
無いようにする必要があります。
この解決方法としては、通常外部に電源電圧の監視回路を設けて、
規定電圧以下でリセットをかける様にしています。
またこの目的のための電圧監視専用のICも出来ています。
PIC本体にはこの機能は含まれていませんでしたが、最近のPICの
マニュアルによると、「Brown-out Reset」(BOR)として、新たに機能
追加されるようですので、
新機種からはこの機能が盛り込まれる様です。
【プログラム初期化】
ハードウェアのリセットにより、プログラムの実行が0番地から始まります。
そして、そのプログラムでまずすべきことは、「初期化」です、
この初期化で何をするかというと、
@ 入出力ポートの設定と初期出力
A タイマの動作モードの設定(使うときだけ)
B 変数の設定
(あらかじめ決めておかなければならない定数や変数の値をセットする)
C 割込みモードの設定(使うときだけ)
などの処理をしておきます。
これでプログラムを正常にスタートさせることが出来るようになります。