クロックの切り替え


【クロック供給モジュールの構成】

PICのファミリごとにクロックの選択と切り替えができるようになっています。
それらの切り替えはコンフィギュレーションで行うものと、レジスタ設定で
行うものとに分かれています。
コンフィギュレーション設定の場合には、動作実行中に切り替えることは
できませんが、レジスタ設定のものは動作中に切り替えることが可能です。

ファミリごとのクロック供給部のブロックを示します。

《PIC16の場合のクロック供給ブロック》
 内部、外部の切り替えは基本はコンフィギュレーションで設定しますが、
レジスタでも切り替えができます。
内蔵クロックを選択した場合には、クロック周波数をレジスタ設定で8種類
の周波数から選択できます。この選択切り替えは実行中にも可能です。



《PIC18ファミリのクロック供給ブロック》
 PIC18ファミリでは、多種類のクロック源があり、コンフィギュレーション設定
とレジスタ設定で切り替えができます。また4倍のPLLも内蔵していて、4倍の
周波数のクロックとすることもできます。
内蔵クロックの場合にはやはり8種類の周波数が切り替えで選択できます。
さらに、クロックの出力回路でCPUへの出力にはスイッチが追加されており、
Idleモードの場合にはCPUへのクロックを遮断します。
外部発振回路には主と副があり、副には32.768kHzのクリスタル発振子を接続
して低周波のクロックとして動作させることもできます。



《PIC24ファミリのクロック供給ブロック》
 PIC24ファミリのクロック源はPIC18とほぼ同じですが、CPUへの出力側に
Postscalerが追加されていて、Dozeモード時にクロック周波数を下げる働き
をします。
さらにクロック制御ロジックの中に、クロックモニタがあり、常時主クロックの
停止を監視していて、もし停止を検出した場合には、内蔵クロックに切り替えると
ともにトラップを生成します。





【クロックの切り替え】

 動作中にクロック周波数を切り替えることで電力消費で削減することが
できますが、この切り替えには下記のような注意が必要です。

(1) タイマやループディレイなどの時間が変化する
  一定時間を生成している要素については、すべて変化しますから
  この対策をした上で変更する必要があります。

(2) 周辺モジュールのタイミングが変わる
  ・UARTのボーレート
  ・PWMの周期
  ・A/Dコンバータの変換クロック、およびアクイジションタイム