クロック発振回路の使い方 


【クロック発振回路の構成】

PIC16F1ファミリのクロック発振回路は大部分下図のような構成となっています。

 これまでのPIC16ファミリと大きく異なるのは、内蔵発振部が大きく変わったことで
クロック周波数をプログラムで変更できることと、内蔵クロックで32MHzという最高
周波数で動作可能になったことです。
 内蔵クロックの場合、温度特性により図にあるような範囲で周波数偏移があります
ので正確な時間が必要な場合には注意してください。

 図中の赤い線で示したルートが内蔵クロックで最高周波数の32MHzで動作させる
場合の設定ルートになります。



【クロックの設定方法】

 このクロックの設定には2つの設定が関連してきます。

 @ コンフィギュレーションによる設定
   コンフィギュレーションで設定する内容は、下記の3つの設定を行います。
   −外部発振か内蔵発振か
   −どの外部発振を使うか
   −PLL回路を使うか使わないか
   −クロック発振モニタ(FSCM)を使うか使わないか

 A OSCCONレジスタによる設定
   OSCCONレジスタでは次の2項目の設定を行います。
   −内蔵クロックの周波数選択
   −PLLの有効/無効切り替え(コンフィギュレーションでPLLを無効としている場合)

   このOSCCONレジスタの内容は下図のようになっています。
   −SCS<1:0>ビットによりクロック源を切り替えることができます。通常は
     コンフィギュレーションとします。
   −IRCF<3:0>ビットで内蔵クロックの場合の周波数を設定します。
   −SPLLENビットでPLLの有効/無効を切りかえられます。


  IRCF<3:0>による設定は下記のような記述でできます。
   
     OSCCONbits.IRCF = 14;

【クロック発振モニタ】

クロック発振モニタ (FSCM = Fail-Safe Clock Monitor)とは、外部クロック発振の停止を
監視する機能です。内蔵クロックには適用されません。
 FSCMの回路構成は下図のようになっています。31kHzのパルスでラッチのリセット
を繰り返し、監視対象のクロックでセットを繰り返しています。
万一クロックが停止すると、ラッチがセットされませんから31kHzのパルスのLowの
タイミングでクロック停止の信号(Clock Failure)が出力されます。
この信号により内蔵クロックに自動的に切り替わり、割り込み要因を生成します。
割り込みが許可されていれば割り込み(OSFIF)を発生します。
スリープ中はこの機能は無効化されます。




 この検出のタイムチャートが下図となります。


【2速度スタートアップ】

2速度スタートアップとは、外部発振クロックでスリープ機能を使う場合に有効な
機能で、スリープからウェイクアップする際、まず内蔵クロックで動作を開始し
外部発振回路が確実に発振したあと、外部クロックに切り替えて実行するという
機能です。

 これは外部発振を使うと、スリープ中は発振回路が停止しており、ウェイクアップ
で発振を再開するのですが、このとき、パワーアップタイマや1024カウントの確認
などで数10msec遅れて発振が確実になります。この間は完全な待ち時間になって
しまい、余計な電力を消費することになってしまいます。この待ち時間の間も
内蔵クロックですぐウェイクアップ動作を開始することで待ち時間を有効活用する
機能です。