【クロック】
PIC18Fxxxxシリーズは、これまでのミッドレンジのPIC16シリーズからかなり強化
されており、下記のような強化ポイントがあります。
(1) PLLによる4倍クロックモードを追加
内蔵PLLにより、外部振動子の4倍の周波数の内部クロックを生成する。
この時の外部振動子は最大10MHz、従ってクロックとしては最大40MHzとなる。
(2) 内蔵クロックを強化
従来内部RC発振だけであったものに対し、8MHzを原振とするポストスケーラ付きの
内蔵クロックが追加されました。
(3) タイマ1の発振回路をシステムクロックとしても使えるようにした。
通常リアルタイムクロック用に32.768kHzのクリスタル発振回路として使うタイマ1の
クロックを、システムクロックとして切替使用できるようにしました。
(4) 低消費電力モードを体系化しクロックの切替、配分が制御できる。
特に低消費電力化を実現するために、クロックの供給元をプログラムで切替ができる
ようになりました。
これで、忙しい時には高速クロックで動かし、暇な時には低速クロックで動かして
低消費電力にするということができるようになりました。
またクロックの供給範囲をCPUと周辺モジュールに分割して、必要な部分にだけ
クロックを供給するという考え方が取り入れられました。
【クロックの種別】
まずPIC18Fxxxxシリーズで用意されているクロックの種類は、表のようになって
います。 この
ク ロ ッ ク 種 別 特 徴 周波数範囲 切替え選択 主クロック
(この内のいずれか1種類)
外部振動子
による発振LP (低電力、水晶) RA6はクロック出力 〜200kHz コンフィギュレーションでいずれか1つを指定する XT (中速、水晶、セラミック) 〜4MHz HS (高速、水晶、セラミック) 〜20MHz HSPLL
(高速、PLL、水晶、セラミック)〜10MHz
(内部は〜40MHz)外部RCに
よる発振RC (外付けRC) RA6はクロック出力 〜4MHz RCIO (外付けRC) RA6は汎用I/O 外部発振器
によるEC (外部発振器) RA6はクロック出力 〜20MHz ECIO (外部発振器) RA6は汎用I/O 内蔵クロック
回路による
(INTRC 31kHz
INTOSC 8MHz)INTIO1
(内蔵クロック回路使用)RA6はクロック出力
RA7は汎用I/Oポストスケーラの使用設定で
INTRC=31kHz
INTOSC=125kHz、250kHz、500kHz、1MHz、2MHz、4MHz、8MHzの8種類から選択可能
OSCTUNEレジスタで周波数微調整可能 INTIO2
(内蔵クロック回路使用)RA6、RA7とも汎用I/O 副クロック タイマ1用クロック 〜200kHz
通常は32.768kHzを使うパワーダウンモードの時使う
これを内部回路ブロックで表示すると下図のようになります。この図からわかるように
右のセレクタ(MUX)でいずれか一つがクロックソースとして選択されます。
さらに内蔵クロック使用の場合には、左側のセレクタで8種類の周波数のうちから一つ
を選択することになります。
これらの選択は、CONFIG1HレジスタとOSCCONレジスタの設定で行います。
【OSCCONレジスタ】
クロック制御用レジスタで、上図の左側のセレクタの制御をします。右側の
セレクタの選択制御はコンフィギュレーションで行いますので、CONFIG1H
レジスタの設定で行います。(コンフィギュレーションの項を参照)
OSCCONレジスタは、通常のプログラム実行中に変更可能ですから、途中で
クロック速度を変更することも可能になりました。
【INTRCのキャリブレーション】
内部RC発振の周波数は、工場出荷時に31.25KHz±1%に調整されていますが、
ユーザー側でこの周波数を微調整することができます。
その微調整用に使うレジスタが、「OSCTUNEレジスタ」で、下図のような構成に
なっています。このレジスタの値を変更すると、8クロック後に新しいクロックに周波数
に変更になります。
このクロックはウォッチドッグタイマなどに使われていますので、そちらも周波数変更
の影響を受けることになります。
キャリブレーションは工場出荷時の値が中心周波数となり、その値の前後に
微調整されることになります。
【主クロックと副クロックの切り替え】
PIC18Fxxxxでは、クロックの信号として、下記3つの内のどれかに切り替え設定
が可能です。この制御は上図のOSCCONレジスタのSCS1,0ビットで行います。
(1) 主クロック
通常の高速クロック、PLLモードで最大40MHz
(2) 副クロック
タイマ1のクロックで通常は、32.768kHzの時計用の水晶振動子を使った
発振回路。周波数が低いので、低消費電力にできる。
(3) 内蔵クロック回路
低消費電力制御モードで切り替え使用可能になる。
実際のクロック設定はRESET時の最初に選択されるのは
CONFIG1Hレジスタへの設定と、OSCCONレジスタの設定で行われますが、
プログラム実行中のクロックの切替は
OSCCONレジスタの設定だけでは行われず、低消費電力モードの切替制御の時に
一緒に実行されます。
つまりSLEEP命令実行時に切替制御が実行されることになります。