リセットの構成


【リセット回路の強化】

PIC18シリーズになってリセットの発生要因がかなり多くなりました。
そしてプログラムでどのリセット条件でリセットされたかを判定することもできるように
なったので、それぞれのリセット条件に応じて処理内容を変えることもできるように
なりました。

【リセットの要因】

リセットが発生する要因には下記があります。

(1) 電源ONリセット(POR)
  これが初期スタートの基本です。

(2) 通常RUN状態でのMCLRピンによるリセット
  強制リセットに当たるもので、リセットスイッチなどによる意図的なリセットです。
  MCLRピンにはノイズフィルタが追加され、短時間のパルス的なノイズ信号は無視され
  リセットはかからないようになりました。

(3) スリープ状態でのMCLRピンによるリセット
  強制ウェイクアップになります。

(4) RUN状態でのウォッチドッグタイマのタイムアップによるリセット
  プログラム暴走などの異常状態を検出した時の自動リセット

(5) ブラウンアウトリセット機能によるリセット(BOR)
  電源電圧低下検出による強制リセットで、電源の異常が考えられます。

(6) リセット命令によるリセット
  18シリーズで新たに追加された命令によるリセットです。

(7) スタックメモリオーバーフローによるリセット
  スタックメモリが一杯でオーバーフローしたときに発生する異常リセットです。

(8) スタックメモリアンダーフローによるリセット
  スタックメモリの使い方が異常で、アンダーフローしたときのリセットです。

そしてこれらの各リセットの区別はRCONレジスタのビット状態で判定します。
そのRCONレジスタは下図のようになっていてそれぞれのリセット後の状態は下表の
ようになります。








 《リセット条件によるリセット後のRCONの状態一覧表》
リセット条件 ^RI ^TO ^PD ^POR ^BOR STKFUL STKUNF
電源ONリセット後 0 u u u
通常RUN時の^MCLR端子によるリセット u u u u u u u
通常時の命令によるリセット後 0 u u u u u u
スタックオーバーフローによるリセット後 u u u u u u 1
スタックアンダーフローによるリセット後 u u u u u 1 u
SLEEP中の^MCLR端子によるリセット後 u 1 0 u u u u
ウォッチドッグタイマタイムアウトリセット後 1 0 1 u u u u
SLEEP中のウォッチドッグによるWakeUp u 0 0 u u u u
ブラウンアウトリセット後 1 1 1 0 u u
SLEEPからの割込みによるWakeUp後 u 1 0 u u u u
 (注)  ^ は負論理を表す  u は変化が無いことを表す


【リセットのタイミング】

 リセットがハードウェア的にかかるとその後のタイミングは、基本動作は従来の
ミッドレンジシリーズのPIC16シリーズとほぼ同じです。
このタイムチャートは下図のようになります。
図のように、電源ON時から一定電圧になった時点で内部RESETが発生し、TPWRT時間
の間持続します。その後クロック発振の確認のためクロックカウントを1024回実行されます。
この時間がTOSTです。この条件が整ったあと内部RESETがOFFとなり命令の実行が開始
されます。








 PIC18シリーズでは、クロックにPLLによる4倍モードが追加されました。このためリセットの
際にもPLLの動作が安定しロックされるまで待つ必要があります。
これに伴い、リセットシーケンスが下図のように変更になりました。すなわち、従来のシーケ
ンスの最期、クロックカウント待ちのあと、さらにロック待ちの時間TPLLが追加されました。
この時間は標準は2msecとなっています。
このPLLロック待ち時間は、リセット時だけでなく、SLEEPからのWakeUp時にも必要とされます
のでWakeUpに必要な時間が2msecだけ延びたことになりますので注意が必要です。








   目次ページへ