<PIC16F688各種発振>

PIC16F688発振回路は、ここでも紹介していますが、内部発振を使ってます(設定してます)。

このページでは、内部発振以外に、外付けのセラミック発振子(セラロック)と水晶発振子を使った発振回路と
インバータICを使った外付け発振器、および発振周波数の設定方法(プログラム)を紹介します。

製作した回路基板(内部発振、セラミック発振子、水晶発振子の3種類動作出来るようにつくりました)
 

外付けのセラミック発振子(左)と水晶発振子(中央)とコンデンサ 2個(右)の画像


<内部発振回路> ON(0.5S)/OFF(0.5S)でLEDが点滅     パルス幅0.5S 確認 (0.2s/div)
 

回路図


<プログラム ポイント>
1.内部発振回路を使うか、外付け部品で作る発振回路かを決める

2.プログラムの中で発振関連の設定をする。
2-1コンフィグレーションの設定
   __CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & INTIO);
                                                                              ------
                                                                             この設定

内部発振回路を使う場合は、INTIOにする、外付けの場合はHS以外にXT,LP,ECなどがある。

2-2 #define _XTAL_FREQ 4000000で発振周波数を設定 この場合4Mhz
2-3 #define JIKAN 500 でON/OFFのパルス幅を設定 この場合500
2-4 __delay_ms(JIKAN)は上の500がJIKANなので500ms、(μsにしたい場合は、__delay_ns(JIKAN)にする)

プログラム
-----------------------------------------------------------------------------------------
#include <htc.h>

//発振回路設定 内部発振:INTIO 外付発振:HS,XT,LP 外部発振器:EC
__CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & INTIO);
__IDLOC(0001);

//発振周波数設定 31K:31000 4M:4000000 20M:20000000 など
#define _XTAL_FREQ 4000000	        /* 4MHz */

//待ち時間設定 __delay_ms(JIKAN):ms __delay_us(JIKAN):μs
#define JIKAN 500			/* 500ミリ秒 */

main()
{

//内臓発振のときはOSCCONを記述、外付発振・外部発振器のときは、この記述いらない
//例 31k:OSCCON=0x00; 4M:OSCCON=0x60; 8M:OSCCON=0x70;	
	    OSCCON=0x60;		/* 内臓発振の4M */
		
		TRISC=0x00;		/* PORTCピンを出力にする */

		PORTC=0x00;		/* PORTCを初期化する */

	while(1){
		
		RC2=1;			/* RC2ポートをH にする */
		__delay_ms(JIKAN);	/* JIKANミリ秒待つ */

		RC2=0;			/* RC2ポートをL にする */
		__delay_ms(JIKAN);	/* JIKANミリ秒待つ */

	}
}
-----------------------------------------------------------------------------------------


<セラミック発振子回路> ON(0.5S)/OFF(0.5S)でLEDが点滅     パルス幅0.5S 確認 (0.2s/div)
 

回路図


プログラムは、内部発振回路の@INTIOをHSにして、下の記述部分Aをコメントアウト

@
  __CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & INTIO);
                                      ↓
  __CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & HS);

A
	    OSCCON=0x60;		/* 内臓発振の4M */
                                      ↓
  //	    OSCCON=0x60;		/* 内臓発振の4M */


<水晶発振子回路> ON(0.5S)/OFF(0.5S)でLEDが点滅     パルス幅0.5S 確認 (0.2s/div)
 

回路図


プログラムは、セラミック発振子回路と同じ

<外付け発振器> ON(0.5S)/OFF(0.5S)でLEDが点滅     パルス幅0.5S 確認 (0.2s/div)
 

回路図


プログラムは、内部発振回路の@INTIOをECにして、下の記述部分Aをコメントアウト

@
  __CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & INTIO);
                                      ↓
  __CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & EC);

A
	    OSCCON=0x60;		/* 内臓発振の4M */
                                      ↓
  //	    OSCCON=0x60;		/* 内臓発振の4M */

外付け発振器は、ここで紹介しています。


<番外編>

1.セラミック発振子回路で、セラミック発振子4Mタイプを20MタイプにするとON(0.5S)/OFF(0.5S)がON(0.1S)/OFF(0.1S)で動作した。

2.水晶発振子回路で、コンデンサ(22PF)を外してもON(0.5S)/OFF(0.5S)で動作した。

※プログラムは上記と同じ