【PICマイコン入門14】クロック設定と発振回路設計方法 | アナデジ太郎の回路設計

【PICマイコン入門14】クロック設定と発振回路設計方法

ソフト設計

この記事でわかること

・PIC16F1ファミリ(5桁Ver)のクロック機能
・クロック周波数の設定方法
・水晶振動子を使用した発振回路の設計方法

PIC16F18857等の末尾の数字が5桁のバージョンは、
定番であるPIC16F1ファミリの中でも新しいシリーズで、高機能で低価格なPICマイコンです。

本記事では、PIC16F1ファミリの5桁Verにおけるクロック回路の使い方と、
水晶振動子による発振回路の設計方法について解説します。

本記事で使用する新居浜高専PICマイコン学習キットについては下記記事で解説しています。

キットの回路図やプログラムはキットを販売している秋月電子のHPからダウンロードできます。
秋月電子 新居浜高専PICマイコン学習キットVer.3 ACアダプタ付

また、参考書も販売されています。

※本記事はPICマイコン学習方法の一例を紹介するものであり、
 ここで紹介するキットやソフトの動作を保証するものではありません。
 キット等の購入については自己責任でお願いします。
 (不明点等の質問にはお答えできません)

<本ソフトの利用環境と設定について>
本記事におけるMPLABの開発環境は以下の通りです。
・MPLAB X IDE v.15
・XC8 v2.46
・Device Family Pack PIC16F1xxxx_DFP(1.24.387)

※ダウンロードしたプロジェクトファイル(NNCTkit_v3.X)は、
 そのままビルドするとエラーになるため、以下の変更を実施しました。

・helpstr.h 9行目
 変更前:const __section(“title”) unsigned char title[224]={
 変更後:const __section(“help_title“) unsigned char help_title[224]={

セクション名がtitleだとエラーになるので、別の名前にします。
ここではhelp_titleにしましたが、何でも良いです。

この時、配列名はtitleのままでも問題ありませんが、
他のデータ同様、配列名をセクション名と同じにする場合は、
この配列を使用しているソースファイルの方も直します。

・monitor.c 2093行目
 変更前:TX1REG = title[i];
 変更後:TX1REG = help_title[i];

MPLABの使い方については下記で解説しています。

PIC16F1ファミリのクロック機能

PIC16F1ファミリ(5桁Ver)のクロック機能について、
学習キットに使用されているPIC16F18857のデータシートを基に説明します。

PICマイコンの動作周波数となるシステムクロック(FOSC)や、
各種機能用のペリフェラルクロックは、外部クロック又は内部クロックを基に生成されます。

PIC16F1ファミリのクロック回路

外部クロックはPICマイコンの外部に設けた
水晶発振器、水晶振動子、セラミック振動子から供給します。

内部クロックにした場合は、PICマイコンの内蔵発振回路
(低周波(LFINTOSC)、高周波(HFINTOSC))から供給されます。

また、PLL回路(※)によりクロック周波数をUPさせることができ、
外部クロックは4倍、内部クロック(HFINTOSCのみ)は2倍にできます。
※Phase Locked Loop(位相同期ループ):クロック周波数を増加させる回路

クロック機能には以下のものがあります。

・分周機能
 分周回路により、クロックを指定した分周比( 1:1 ~ 1:512)に分割できます。
 分周比はOSCCON1(発振器制御1)レジスタのNDIV(分周比設定)で設定できます。
 (但し、CONFIG1レジスタのCSWEN(クロック切替有効化)を1にしておく必要がある)

・フェールセーフ クロック モニタ(FSCM)
 外部クロック使用時に異常を検知した場合、
 内部クロック(HFINTOSC 1MHz)に自動的に切り替えます。

この時、発振器故障割込(OSFIF)が発生するので、
この割込み処理を利用して、クロック故障時の対策処理を実行させることができます。

FSCMは、OSCCON1レジスタのFCMEN(FSCM有効化)を1にすることで有効にできます。
※故障検出は、内部クロック(LFINTOSC)から生成したサンプル クロックを用いて行います。

・発振子起動タイマ(OST)
 外部クロックのうち、 水晶又はセラミック振動子を使用(LP、XT、HS モード)している場合、
 起動時、クロック信号を1024回カウントしてから、システムクロック(FOSC)を出力します。
 これによって、発振回路が安定動作になるまでマイコンを動作しないようにしています。

水晶振動子の起動波形
電源投入時のクロック動作タイミング

・クロック切替機能
 OSCCON1(発振器制御1)レジスタのCSWEN(クロック切替有効化)を1にすることで、
 起動後にクロックの種類や分周比を変更することができます。
 切替が発生すると、クロック切替割込(CSWIF)を発生させることができます。

また、OSCCON3(発振器制御3)レジスタのCSWHOLD(クロック 切替保留)を1にすることで、
クロック切替を一時的に保留にできます。

クロックの種類

クロックには大きく分けて、外部クロックと内部クロックがあり、
それぞれ周波数毎に複数のモードが存在します。
(クロックモードの設定については、後述する「クロック設定方法」を参照)

外部クロック

外部接続する発振器/振動子の種類に応じたモードに設定して使用します。

・水晶発振器
 発振器の周波数に応じて3つのモードから選択します。
  ECH 高周波(8MHz ~32 MHz)
  ECM 中周波(500 kHz ~ 8 MHz)
  ECL 低周波(500 kHz 以下)

水晶発振器を使用したクロック回路

発振器からのクロック信号はOSC1ピンに入力します。
未使用のOSC2ピンはGPIO 又は クロック出力(CLKOUT)に使用できます。

上記モードの場合、発振子起動タイマ(OST)は無効となるため、
起動(リセット)時はシステムクロック(FOSC)が直ぐに出力されます。

PLL(逓倍回路)を使用すると、クロック周波数を4倍にできます。
PLL の入力周波数範囲は4~8MHzとなっているので、出力周波数は16~32MHzになります。
但し、PLLを使用すると、ノイズやジッタ(クロック誤差)が大きくなる欠点があります。

水晶発振器は負荷コンデンサや抵抗等の周辺部品は不要(バイパスコンデンサは必要)なので、
回路をシンプルにできますが、水晶振動子に比べて価格が高いです。
(秋月電子のサイトでは、水晶振動子が¥30程度で、水晶発振器は¥200~¥300)

・水晶振動子、又はセラミック振動子
 振動子の周波数に応じて3つのモードから選択します。
  HS 高周波(4MHz ~ 20 MHz)
  XT 中周波(100 kHz ~ 4 MHz)
  LP  低周波(32.768 kHz)

       LPは音叉(おんさ)型水晶振動子用で、時計動作に使用される
       (32.768kHzは、32768( = 215)分周すると1Hzとなり、1秒カウンタが作れる)

水晶振動子を使用したクロック回路

振動子の両端をOSC1、OSC2ピンに接続し、負荷容量用のコンデンサC1、C2と、
必要に応じてオーバードライブ防止用の抵抗Rsを使用します。
(回路定数の選定については後述)

上記モードの場合、発振子起動タイマ(OST)が有効となり、
クロック信号を1024 回カウントしてから、システムクロックが出力されます。

8MHz発振子の場合、1カウントあたり 1/8MHz = 125ns なので、
待機時間は、125ns × 1024カウント = 128ms となります。

キットでは8MHz水晶振動子が使用されており、精度は±30ppm(0.003%)になります。

セラミック振動子は村田製作所製のセラロックが有名で、
コンデンサが内蔵されているため、外付けのコンデンサを不要にできます。

セラミック振動子を使用したクロック回路

精度は±0.5%程度と水晶振動子には劣りますが、
価格は水晶振動子と同程度でコンデンサを不要にできる分、低コスト・省スペース化が可能です。

・サブ発振器(SOSC)
 上記のメインクロックとは別に設ける代替発振回路で、32.768 kHzの水晶振動子を接続します。
 回路はメインクロックと同様の構成になります。

サブクロック回路

サブ発振器がある理由ですが、主に低消費電力動作時のクロック入力に使用します。

スリープモードにすると外部クロックは停止しますが、
サブ発振器は動作し続けるため、タイマクロックに使用することで、
待機状態時の時計機能の維持などに利用できます。

内部クロック

内部クロックはスリーブモードでも動作できますが、
周波数精度が±5%と低いので、正確なクロック動作が必要な場合は外部クロックにします。

内部クロックモード時は、外部クロック入力(OSC1、OSC2)ピンはGPIOに使用できます。
(OSC2ピンについては、クロック出力(CLKOUT = Fosc/4)にも使用可)

・高周波内部発振器(HFINTOSC)
 周波数は1~32MHzの範囲で選択できます。(初期設定時は1MHzと32MHzを選択可

 起動後にOSCFRQ(周波数選択)レジスタで周波数の設定ができ、
 OSCTUNE(調整)レジスタで微調整を行うことが可能です。
 また、PLL(逓倍回路)を使用すると、クロック周波数を2倍にできます。
 (但し、上限があり、PIC16F18857の場合、32MHzより高くすることは不可)

・低周波内部発振器(LFINTOSC)
 主に時計用に使用される周波数32.768 kHzを出力します。
  LFINTOSC はシステムクロック以外にも、
  PWRT、WDT、FSCM、タイマ0・1・2、SMT1、SMT2、CLKR、CLCに使用されます。

※PWRT(POWER up Timer) パワーアップタイマ(リセット後、ソフト実行を遅らせる)
※WDT(Watch Dog Timer) :ウォッチドッグ タイマ
※SMT(SIGNAL MEASUREMENT TIMER) :信号測定タイマ  
※CLKR(Clock Reference) :システムクロックFoscを分周して外部ピンに出力できる信号
※CLC(Configurable Logic Cell) :構成可能ロジック セル CPLDのようなもの
                 ソフトより早く動作するプログラム可能なロジック

・中周波内部発振器(MFINTOSC)
 HFINTOSCを基に500 kHz と、16分周した 31.25 kHz の2つのクロックを出力します。
 本クロックはシステムクロックには使用せず、以下のペリフェラルで用いられます。
   500 kHz :タイマ1・3・5、SMT1、SMT2、CLKR
   31.25 kHz:タイマ2・4・6、WDT、SMT1、SMT2、CLKR



クロック周波数の設定方法

外部/内部クロックの選択や分周比の設定は、
起動時の初期設定と、動作中の設定変更で方法が異なります。

<起動時>
 リセット後のクロック初期設定はCONFIG1(コンフィギュレーション ワード 1)レジスタ
 RSTOSC(発振器選択)とFEXTOSC(外部発振器モード選択)で行います。

CONFIG1レジスタの設定は、通常のプログラムによる設定とは異なり、以下の命令を使用します。
   #pragma config  コンフィギュレーションワード1の各項目名 = 設定値
          設定できる項目は、デバイスによって種類や設定値が異なる。
 <例>
   #pragma config RSTOSC = EXT4X
   外部クロック(PLLによりクロック周波数を4倍)を選択
   #pragma config FEXTOSC = HS    HS(水晶振動子 4MHz以上)を選択

この#pragma命令のように#から始まる命令はプリプロセッサ命令と呼ばれるもので、
whileやforといった通常の命令のようにプログラムの実行時に行うものではなく、
ソースコードを実行ファイルに変換(コンパイル)する時に行われる前処理になります。

<動作時>
 起動後のクロック設定変更はOSCCON1(発振器制御1)レジスタの
 NOSC(発振器の種別)とNDIV(分周比の設定)で行います。
 但し、CONFIG1レジスタのCSWEN(クロック切替有効化)を1にした場合に変更可能
 設定内容の詳細は後述する「クロック回路関連レジスタ」で説明します。

発振器の状態確認と有効化
 外部及び内部クロックが状態(使用可能かどうか)は、
 OSCSTAT1(発振器状態1)レジスタ に表示されます。

また、上記の方法以外にも、OSCEN(発振器手動有効化)レジスタで有効化できます。
OSCENによる有効化は各発振回路の動作検証等に利用できます。

クロック設定関連レジスタ

CONFIG1 :コンフィグレーションワード 1レジスタ

起動(リセット)時のクロック初期設定を行う。
FCMEN : フェールセーフ クロック モニタ(FSCM) 有効化 (1 = 有効、0 = 無効)

CSWEN : クロック 切替 有効化
     OSCCON1
レジスタのNOSC(切替後の発振器選択)とNDIV(切替後の分周比設定)を有効にする
     1 = 有効(変更可) 、0 = 無効 (変更不可)

CLKOUTEN : CLKOUT(クロック出力)有効化(OSC2ピンをCLKOUTに設定する
       1 = 無効 、0 = 有効
      無効時は、OSC2はGPIO 又は発振子入力に使用
      本設定は本レジスタのFEXTOSC(外部発振器モード選択)が

      水晶発振器(ECH,ECM,ECL) 又は 無効(OFF)の場合に有効
  
RSTOSC : クロック種別選択
     111 = EXT1X 外部クロック(1倍)FEXTOSC で指定した外部発振器モードで動作
     110 = HFINT1 内部クロック HFINTOSC(高周波内部発振器) :1 ~ 32 MHz(1)
     101 = LFINT 内部クロック LFINTOSC(低周波内部発振器):32.768 kHz
     100 = SOSC 外部クロック SOSC(サブ発振器):32.768 kHz
     011 = 無効
     010 = EXT4X 外部クロック(4倍)FEXTOSC で指定した外部発振器モードで動作
     001 = HFINTPLL 内部クロック(2倍で32MHz)HFINTOSC(OSCFRQ = 16 MHz、CDIV = 1:1に設定時)
     000 = HFINT32 内部クロック(逓倍無し32MHz)HFINTOSC(OSCFRQ= 32 MHz、CDIV = 1:1に設定時)

     (1)初期値はOSCFRQレジスタのHFFRQ(周波数設定)の初期値010(4MHz)になるが、
        OSCCON1レジスタのNDIV(分周比設定)の初期値0010(1:4)により、1MHzとなる。

  
     本設定は起動時にOSCCON2(発振器制御レジスタ 2)のCOSC(現在の発振器の種別)に反映される。

FEXTOSC :外部発振器モード選択
      111 = ECH 水晶発振器 高周波 (8 MHz 以上)
      110 = ECM 水晶発振器 中周波 (500 kHz ~ 8 MHz)
      101 = ECL 水晶発振器 低周波 (500 kHz 未満)
      100 = OFF 外部発振器は無効(OSC1ピンはGPIOに使用可能)
      011 = 無効
      010 = HS 水晶又はセラミック振動子 高周波 (4 MHz 以上)
      001 = XT 水晶又はセラミック振動子 中周波 (100 kHz ~ 4 MHz)
      000 = LP 水晶又はセラミック振動子 低周波 (32.768 kHz)

OSCCON1 : 発振器制御1レジスタ

起動後にクロック設定を変更する際に使用する。
但し、CONFIG1のCSWEN(クロック 切替有効化)が0(無効)の場合は使用不可。

NOSC : 新規 クロック種別
     111 = EXTOSC 外部クロック(1倍)FEXTOSC で指定した外部発振器モードで動作(1)
     110 = HFINTOSC 内部クロック HFINTOSC(高周波内部発振器) :1 ~ 32 MHz(2)
     101 = LFINTOSC 内部クロック LFINTOSC(低周波内部発振器):32.768 kHz
     100 = SOSC 外部クロック SOSC (サブ発振器):32.768 kHz
     011 = 予約済 選択時は110(HFINTOSC)として動作
     010 = EXT4X 外部クロック(4倍)FEXTOSC で指定した外部発振器モードで動作(1)
     001 = HFINTPLL 内部クロック(2倍で32MHz)HFINTOSC(OSCFRQ = 16 MHz、CDIV = 1:1に設定時)(2)
     000 = 予約済 選択時は110(HFINTOSC)として動作

  ※1: EXTOSC は、CONFIG1レジスタの FEXTOSC で設定される。
  ※2: HFINTOSC の周波数は、OSCFRQ レジスタの HFFRQ によって設定される。

  ・リセット時はCONFIG1レジスタの RSTOSC で設定した値がセットされる。

NDIV : 新規 プリスケール(分周比)設定 1:2NDIV
    1101 = 1:512(= 29)  ~ 0001 = 1:2(=21) 、0000 = 1:1(=20
    ・1111 ~ 1010は無効
    ・リセット時の初期値はNOSC = 110 (HFINTOSC) の場合を除き、0000(1:1)。
     NOSC = 110 の場合は0010(1:4)(HFINTOSC = 4MHzを元に、FOSC = 1MHzになる)

 分周比はOSCCON1(発振器制御1) レジスタの NDIV(分周比設定)で設定する。

OSCCON2 : 発振器制御2レジスタ

現在のクロック設定が示される(書込み不可)
※リセット時の初期値はOSCCON1のNOSC、NDIV と同じ。
COSC : 現在のクロック種別
     表示される値はNOSC(新規 クロック種別)を参照

CDIV : プリスケール(分周比)設定 1:2CDIV
     表示される値はNDIV(新規 分周比)を参照

OSCCON3: 発振器制御3レジスタ

各種クロックの状態を表示(1 = 使用可能、0 = 無効、又は使用不可)
CSWHOLD : クロック切替 保留
       1 = クロック切替を保留。但し、クロック切替割込みフラグ (CSWIF) は1(割込み発生)になる。
       0 = クロック切替が有効。クロック切替が即実行される。

SOSCPWR : サブ発振器電力モード選択(1 = 高電力モード、0 = 低電力モード)

ORDY : クロック切替完了(読取り専用)
     1 = 切替完了(NOSC で指定されたクロックに切替済 OSCCON1 = OSCCON2)
     0 = 切替処理中

NOSCR : 新規 発振器 準備完了(読取り専用)
     1 = クロック切替が進行中、NOSC で選択された発振器が準備完了状態を示す
     0 = クロック切替が進行中ではない、又はNOSC で選択された発振器がまだ準備中

OSCSTAT : 発振器 状態レジスタ

各種クロックの状態を表示(1 = 使用可能、0 = 無効、又は使用不可)
EXTOR : 外部発振器
HFOR : HFINTOSC(高周波内部発振器)
MFOR : MFINTOSC(中周波内部発振器)
LFOR : LFINTOSC(低周波内部発振器)
SOR  : SOSC(サブ発振器)
ADOR : FRC (ADC専用RC発振器)
PLLR : PLL(逓倍回路)

OSCEN : 発振器 手動有効化レジスタ

以下のフラグを1にセットすることで、各クロックを手動で有効化する。
EXTOEN : 外部発振器
      CONFIG1レジスタのFEXTOSC(外部発振器モード選択)で指定された外部発振器で動作

HFOEN : HFINTOSC(高周波内部発振器)
      OSCFRQ(HFINTOSC 周波数選択)レジスタで指定された周波数で動作

MFOEN : HFINTOSC(高周波内部発振器)
LFOEN : LFINTOSC(低周波内部発振器)
SOSCEN : SOSC(サブ発振器)
      OSCCON3レジスタのSOSCPWR(電力モード選択)で指定されたモードで動作

ADOEN : FRC (ADC専用RC発振器)

OSCFRQ : HFINTOSC周波数選択レジスタ

HFFRQ : HFINTOSC 周波数設定 
     111 = 使用不可、 110 = 32MHz、  101 = 16MHz、 100 = 12MHz
     011 = 8MHz、 010 = 4MHz、 001 = 2MHz、 000 = 1MHz

・リセット時の初期値は以下の通り
  RSTOSC = 110 (HFINTOSC 1 MHz) の場合:010(4MHz) 
        OSCCON1レジスタのNDIV(分周比設定)の初期値(1:4)により、FOSC = 1MHzとなる。
  RSTOSC = 000(HFINTOSC 32 MHz) の場合:110(32MHz)

OSCTUNE : HFINTOSC調整 レジスタ

HFTUN : HFINTOSC 周波数微調整
     +31~-32段階(±3%程度)に調整できる
     6bitの2の補数で設定 
      10 0000 = 最小周波数(-32段階)
      ・・・
      11 1111 (-1段階)
      00 0000 = 中心周波数(初期設定値)
      00 0001 (+1段階)
      ・・・
      01 1111 = 最大周波数(+31段階)

※この調整はHFINTOSCを基にクロック生成されるMFINTOSCにも影響する



水晶振動子を使用した発振回路の設計

以下の記事は、PICマイコンの製造メーカーであるマイクロチップ社の技術資料を参照しています。
・AN849「Basic PICmicro® Oscillator DesignPICmicro」
・FACT001「Basic PIC16/17 Oscillator Design」

下図は水晶振動子を用いた場合の発振回路で、
PICマイコン内では、反転増幅器の出力がフィードバック抵抗RFを介して
入力に戻される帰還回路を形成しています。

水晶振動子を使用したクロック回路

反転増幅器は入力された信号を増幅し、反転して出力するもので、
増幅度(ゲイン)が大きい程、出力される電圧は高くなります。

PICマイコンの外部には水晶振動子X1とコンデンサC1、C2による共振回路が構成されています。
(RSは必要に応じて接続。詳細は後述)

この発振回路の動作原理について説明します。

まず、電源投入(起動)時ですが、
反転増幅器のゲインは大きいので、ノイズによる微小信号が入力されると、
ノイズを増幅した信号が反転して出力され、
RFを経由して入力に戻されることで、徐々に信号が大きくなっていきます。

信号が大きくなると、出力(OSC2)がH時にC2が充電されるようになり、
電荷が水晶を介してC1とC2間を往復することで共振回路が動作(発振)します。

発振すると、水晶は特定の周波数(共振周波数)だけインピーダンスが小さくなります。

RFは通常 5 MΩ~ 30 MΩとなっており、共振回路が発振するとRFではなく、
水晶振動子経由でフィードバックするようになり、
共振周波数以外のノイズ成分は通過できずに除去されることで、
必要なクロック信号のみを出力します。

<クロック モード>
反転増幅器のゲインですが、大きすぎるとノイズも増幅されてしまい、
逆に小さすぎると、起動できなかったり、信号が減衰して発振回路が停止します。

反転増幅器のゲインはクロックモードにより設定でき、PIC16F1ファミリでは3種類あります。
 HS:高ゲイン 高周波(4MHz ~ 20 MHz)用 高速動作
 XT:中ゲイン 中周波(100 kHz ~ 4 MHz)用 標準動作
 LP:低ゲイン  低周波(32.768 kHz)用 低電力動作

高ゲインは起動時間を早くでき、エネルギー供給が大きいので高周波発振に向いていますが、
消費電力が増加し、水晶がオーバードライブ(※)しやすくなります。
 ※過剰な発振動作状態のことで、周波数が上昇したり、水晶に損傷を与える恐れがあります。
  オーバードライブを防ぐには、C2 を増やしたり、Rs を追加したりします。(詳細は後述)

低ゲインは消費電力を節約できますが、起動時間が長くなります。
また、高温環境や電源電圧の低下によりゲインが低下するため、
起動が遅くなったり、起動できない場合があります。

<水晶振動子>
水晶振動子のデータシートに記載されている負荷容量CLは、
発振回路に使用する際の条件として定められたもので、
水晶振動子の両端から発振回路を見た時の静電容量(以下、発振回路の容量と記す)が、
CL値に出来るだけ近い値にする必要があります。

(ここで、出来るだけとした理由については後述)

発振回路の容量はC1とC2の合成容量と、
回路パターンや部品ピン等の浮遊容量Cstrayとの和になります。

 発振回路の容量=(C1×C2)/(C1 + C2)+Cstray

※C1とC2の合成容量が直列接続時の式になっているのは、
 GNDを介してC1とC2が接続されていると考えることができるためです。

<コンデンサの役割>
C1とC2によって、水晶を介し電荷が両コンデンサ間を行き来することにより発振を維持します。

基本的にはC1とC2は同じ容量にしますが、C2の方を大きくして、
電源投入時の位相シフトが大きくなることで起動を早くしたり、
発振動作中のゲインが下がることで、オーバードライブを抑制させる場合があります。

また、両コンデンサはクロック信号から浮遊ノイズを分離するという役割もあるので、
10 pF 未満にすることは避けます。

Cstray は以下の容量をまとめたもので、一般的には 5 ~ 15 pF程度です。
 ・ピンの容量
 ・コンデンサ、抵抗、水晶のリード容量
 ・パターンの容量

※Cstrayを小さくするため、発振回路のパターン長は最短配線にします。

学習キットのクロック回路

学習キットの発振回路では、8MHzの水晶振動子(負荷容量CL=20pF)と
15pFのセラミックコンデンサを使用しています。

PICマイコン学習キットのクロック回路

ここで、Cstray を12.5 pFとすると、発振回路の容量は
 [(15 x 15)/(15 + 15)] + 12.5 = 20 pF
となり、水晶振動子のCLと一致します。

<抵抗の役割>
Rs はオーバードライブ防止用に設けるもので、
ゲイン(クロック モード)や、C1とC2を適切に選択した場合、通常は必要ありません。

OSC2ピンと C2 の間にRsを追加し、インピーダンスを高くすることでゲインが下がり、
オーバードライブ発生を抑えます。

オーバードライブしているかどうかは、クロック出力であるOSC2ピンを波形観察し、
信号がクリップ(※)したり、周波数が高調波になっているかどうかで確認できます。
※波形のピーク部分が潰れて歪んだ状態

水晶がオーバードライブ時の波形

但し、測定に用いるオシロスコープのプローブ入力容量が
発振回路の容量に影響することを考慮する必要があります。

本波形の測定に使用したプローブ(倍率10倍(10:1)設定時)の入力容量は10pFなので、
回路の静電容量は先程計算した20pFから30pFに増加します。
(ちなみに、倍率を1倍(1:1)にした時の入力容量は50pFもあり、プローブ接続したら発振が停止しました)

水晶振動子のクロック波形

Rs は大きすぎると、反転増幅器への入力がノイズの影響を受けやすくなるので1kΩ 以下にします。

RP はセラミック振動子を使用する場合に使用する追加のフィードバック抵抗で、
通常 1 MΩ~ 5 MΩを接続します。(基本的に水晶振動子では不要)

セラミック振動子を使用したクロック回路

RPを追加することで、起動時のフィードバック抵抗値を小さくすることで、
更にノイズが増えて起動しやすくします。