<74HCU04発振回路>
発振回路には、デジタルICのインバータ(NOT)を使った回路があります。
そのインバータICには、74HCU04以外に74LS04、74HC04などがあり、74HCU04、74HC04はC-MOSで、74LS04はTTLです。
よく紹介されているのは、74HCU04・74HC04で、発振回路に使用するにはアンバッファタイプの74HCU04のほうがいいとのことです。
74HCU04はアンバッファタイプ、74HC04はバッファタイプで下画像の違いがあります。
ここでは、74LS04と74HCU04で、それぞれ発振回路(4Mhz,20Mhz)を組み立てました。発振は、オシロで確認すればいいのですが
数M以上のオシロがなく発振確認出来ないので、PIC16F688の外付け発振器に、この発振回路(4Mhz,20Mhz)を取り付けてLEDの点滅が、するかしないかで判断しました。
発振回路
実際の発振回路と発振の確認 (左が発振回路、右がPIC16F688発振確認回路 0.5S ON/OFFの点滅)
まずICですが、74LS04は、いろいろ試しましたが発振しませんでした。
それで、74HCU04での、セラロックと水晶の発振子および、数種類のR、Cを組み合わせた実験結果を紹介します。
<外付け セラロック発振>
セラロック=4M R=10K ×
セラロック=4M R=100K ○
セラロック=4M R=510K ○
セラロック=4M R=1M ○
セラロック=4M R=無し ○
セラロック=20M R=1K ×
セラロック=20M R=10K ○
セラロック=20M R=100K ○
セラロック=20M R=510K ○
セラロック=20M R=1M ○
セラロック=20M R=無し ○
<外付け 水晶発振>
C1,C2=22Pf
水晶=4M R=10K ×
水晶=4M R=100K ○
水晶=4M R=510K ○
水晶=4M R=1M ○
水晶=4M R=無し ○
水晶=20M R=1K ×
水晶=20M R=10K ○
水晶=20M R=100K ○
水晶=20M R=510K ○
水晶=20M R=1M K ○
水晶=20M R=無しK ○
プログラム
-----------------------------------------------------------------------------------------
#include <htc.h>
//発振回路設定 内部発振:INTIO 外付発振:HS,XT,LP 外部発振器:EC
__CONFIG(FCMDIS & IESODIS & BOREN & UNPROTECT & MCLREN & PWRTEN & WDTDIS & EC);
__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ミリ秒待つ */
}
}
-----------------------------------------------------------------------------------------
以上の結果から、ICはアンバッファタイプの74HCU04でRの値は、100K以上であれば再現性のある
外付け発振器となるようです。ICの使っていない端子は、プルアップ、プルダウン推奨とありますが
今回はしていません。(特に不具合はありませんでした)