【クロック発振回路とは】
クロックというのは、一般に回路を動かすためのペースメーカとして使われる信号のことを
言い、常に一定の周波数の信号を使います。
PICは、外付けの各種振動子で作られるクロック信号をもとにして内部クロックを作り出し、
全てのタイミング制御を行っています。
また複数の発振用素子に対応した発振回路があらかじめ内蔵されており、発振モードの
設定だけで対応させることが出来るようになっています。
しかし、数個のものを製作するときにはこれで問題は何もないのですが、多量に量産する
ときには、発振素子のばらつきを考慮して安定に発振するようにする工夫が必要です。
【発振モード】
このPICのクロックを作成する発振回路には、使われる素子 によって複数の発振モードが
あります。回路の使用目的によって適したモードを選択する必要があります。
特に価格を重要視する時や、振動子が入手し難い時以外は、水晶振動子かセラミック振動
子を使ったモードが安定して動作するのでお勧めです。
ミドルレンジのPIC16xxシリーズには、発振モードを設定するためのコンフィギュレーション
ビットが、2ビットのものと3ビットのものがあり、それぞれに可能な発振モードが下表の様に
異なっています。
(1) 発振モード設定が2ビットの場合(FOSC2、FOSC1)
モード
設定
説明
発振周波数範囲
特徴
LP
00
低電力/水晶発振
(Low Power Crystal)200kHz以下
極低消費電力動作が可能 XT
01
水晶/セラミック発振(Crystal/Resonator) 4MHz以下
標準的 HS
10
高周波水晶/セラミック発振(High Speed Crystal/Resonator) 4MHz 〜 20MHz
高速動作 RC
11
RC発振
(Resister/Capacitor)約1MHz以下(4MHzもあり)
周波数精度は悪い
(2) 発振モード設定ビットが3ビットの場合(FOSC2、FOSC1、FOSC0)
モード
設 定
説 明
発振周波数範囲
特 徴
LP
000
低電力/水晶発振 200kHz以下
極低消費電力動作が可能 XT
001
水晶/セラミック発振 4MHz以下
標準的 HS
010
高周波水晶/セラミック発振 4MHz 〜 20MHz
高速動作 未使用
011
−−−−
−−−
−−−−
INTRC
100
内部RC発振 CLKOUT無し 4MHz
最も安価
CLKOUTピンはI/Oピンとして使用可能INTRC
CLKOUT101
内部RC発振 CLKOUT付 4MHz
最も安価
CLKOUT出力ありEXTRC
110
外付けRC発振 CLKOUT無し 〜1MHz
発振周波数精度は悪い EXTRC
CLKOUT111
外付けRC発振 CLKOUT付 〜1MHz
発振周波数精度は悪い
【水晶/セラミック発振モード】
水晶(クリスタル)発振モードは、最も周波数精度が高く(数10ppm以下)かつ安定な発振を
します。従って水晶発振は、時計機能などに必要な高精度発振が必要な場合や、一定の
速度でのシリアル通信をするような場合、あるいは高精度な一定の時間を必要とする場合
などに使います。Xtal
左の写真は水晶振動子の代表的なもので、
左側がHC-49U 真中がHC-49USと呼ばれ
ているタイプです。HC-49USタイプの方が
小型で実装したときの部品の高さが低いので
便利に使えます。
その右側は32KHzの時計用で特に小型に
出来ています。これを使うのは、電池動作を
する場合で特別に消費電流を少なくしたい
ときで、PICの動作速度が遅くても良い場合
に使います。
セラミック発振モードのメリットはセラミック振動子の周波数変動誤差は0.5%程度なので
RC発振モードに比べれば高精度の周波数が出せ、水晶振動子より安いことです。
デメリットは電源電圧が変化する様な用途では、やや不安定で最悪発振が止まってしまう
事もあることです。このためセラミック発振は、特に高精度の時間要求が無く、一定の電圧で
使用する場合に使います。左の写真は代表的なセラミック振動子で、セラ
ロックとも呼ばれています。周波数によりサイズ
が異なるのと、コンデンサ内蔵タイプもああり
ます。コンデンサ内蔵タイプは3本足のもので、
外付けの2個のコンデンサが不要になるので
スペースが少ない時に便利です。
真中の足が共通グランドになっています。
水晶発振・セラミック発振いずれも推奨回路は下図のようになっています。
部品では、C1、C2については発振周波数に
よって最適なコンデンサの値を選ぶ必要が
あります。
また高い周波数用の水晶振動子の場合に
素子に流れる電流抑える目的でRSという
抵抗を付加することもありますが、大部分
の場合には必要ありません。
水晶振動子にもセラミック振動子にも、発振を安定にさせるために、両端にコンデンサを
付加します。これに使うコンデンサの種類は、一般的なセラミックコンデンサを使います。
付加するコンデンサの容量には下表ような推奨値があります。
この推奨値を守ってコンデンサを付加することで安定な発振を得ることができます。
極端に異なる値のコンデンサを付けた時には発振しないこともあるので要注意です。
(a) セラミック発振回路の場合
発振モード
発振周波数
C1、C2の値
XT
455kHz
2.0MHz
4.0MHz22〜100pF
15〜68pF
15〜68pFHS
8.0MHz
10MHz
16MHz10〜68pF
15〜33pF
10〜22pF(b) 水晶(クリスタル)発振回路の場合
発振モード
発振周波数
C1の値
C2の値
LP
32kHz
200kHz68〜100pF
15〜33pF68〜100pF
15〜33pFXT
100kHz
2MHz
4MHz68〜150pF
15〜33pF
15〜33pF150〜200pF
15〜33pF
15〜33pFHS
4MHz
8MHz
10MHz
20MHz15〜33pF
15〜33pF
いずれの発振回路でも、電源が加えられてから、発振を開始し発振振幅電圧が
安定するまでには若干の時間がかかります。この様子を図で表すと下図のように
なします。
この不安定時間の目安は
およそ下記のようになります。
RC発振 : 1.5〜5.0msec
セラミック発振 :2.0〜5.0msec
クリスタル発振:5.0〜10 msec
この安定するまでの間は、PICが不安定な動作をすることも考えられるので、この不安定
時間より十分長い時間の間「リセット」をかけてPICを停止状態のままとしておく必要が
あります。
しかし、PICの場合には、リセット回路に工夫が加えられており、電源ONの後、電圧
そのものが安定し、クロック発振回路の安定を待つ時間の間、リセット信号が継続する
ようになっていますので、外部でこれを意識する必要はありません。
(Power On Reset機能)
【外部発振ユニットを使う場合】
PICの内蔵の発振回路を使わず、外部に一定の周波数の信号を発生する発振ユニットを
付加してPICを動作させることも可能になっています。
これはどんな時につかうというと、高精度な時計などを作る場合には、水晶発振モードでは
精度が不足してしまい要求の精度を満足しません。
このような時には、特別高精度な発振ユニットを使って、それをPICのクロック信号として使
います。
写真は、高精度発振ユニットの例です。
左側は固定周波数のもの。
その右側2つは、わずかに周波数が
可変でき、しかも周波数精度が3ppm
以下という高精度の発振ユニットです。
外部発振ユニットを使う場合のPICとの接続は図のようにします。この接続方法の抵抗の
接続方法はユニットによって少し異なりますので、発振ユニットのデータシートを参照して
下さい。
上記写真の右側の素子を使った場合の
回路例です。
出力レベルがやや低いので、10KΩの
抵抗でレベルを調整しています。
【外付けRC発振モードの回路】
RC発振モードのメリットは抵抗とコンデンサだけで出来るため安価であることと、部品点数
が少ないことです。逆にデメリットは、発振周波数を正確にかつ安定に決めるのが難しいこと
です。
これは抵抗やコンデンサの精度が余り良くないことと、温度などにより値が変化するためです。
このためRC発振は、比較的周波数がラフで良い場合、例えばゲームなどや、発振周波数が
数100KHzと低い場合に使います。
外付けRCによる発振は下図の推奨回路に従って抵抗、コンデンサの値を決めます。
RC発振そのものはPIC内部の回路で行われ、OSC2にはクロックの1/4倍の周波数が出力
されます。この回路での実際の発振周波数は、一般のRC発振時定数である、
f=1/RC
で決まる周波数よりかなり低めになり、データシートのグラフで推定することが必要になります。
これはPICの漏れ電流と浮遊容量の影響によるもので素子によってばらつきがあります。
図のようにOSC2のピンは、CLKOUTとして
クロック信号の出力ピンとしても使えるし、
汎用の入出力ピンとしても使えます。
外付けの抵抗、コンデンサには使用可能な値の範囲に
制限があるので注意が必要です。
PICの素子による発振周波数のばらつきを少なくするため
には、抵抗は小さめに、コンデンサは大きめにするのが
コツです。
【内部RC発振モードの回路】
PICに内蔵されているRCによってクロックを発振させるものです。この場合には周波数
が「4MHz」の固定になっていますので注意が必要です。
しかも、この周波数精度が悪いため、これを合わせこむための工夫がなされています。
この仕組みが「キャリブレーション」と呼ばれているものです。
仕掛けは、メモリの最後のアドレスに書かれた値をキャリブレーションのためのデータ
として使い、この値によって発振周波数を上下に微調整することが出来ます。
このキャリブレーションの値を設定するレジスタが、OSCCALとなっています。
この設定の仕方は、CAL0〜CAL3の値を設定することで僅かのステップづつ周波数
を高低に変化させながら、ぴったりの4MHzになるように調整します。
この調整だけで調整仕切れない時は、CALFSTかCALSLWのいずれかを「1」にして
さらに高い方か、低い方にずらし、再度CAL0からCAL3を設定し直して合わせるように
します。
【クロック周波数と消費電流】
PICはクロックの周波数と電源電圧によって消費電流が変化し、動作周波数が低い時
には非常に少ない動作電流で動作させることが出来ます。この特徴をうまく使った応用に
時計があります。
動作周波数を32KHzという非常に低速で動作させると、電池で動作させても、1年以上
連続動作させることも可能です。
「PIC16F84」を調べると、クロック周波数と平均-最大消費電流の関係は下表のようになって
います。
この表からも分かるように、PICは電源電圧を低くし、クロック周波数を低くすると、極端に
消費電流を抑制することができます。従ってバッテリ駆動のような応用でも十分長時間動作
が可能となります。
電源電圧
周波数2V
3.5V
5V
30KHz
15μA〜52μA
30μA〜90μA
45μA〜0.15mA
100KHz
18μA〜80μA
37μA〜0.15mA
56μA〜0.2mA
1MHz
20μA〜0.2mA
72μA〜0.4mA
95μA〜0.7mA
10MHz
0.12mA〜1.0mA
0.25mA〜2.0mA
0.35mA〜3.0mA