AVRマイコンIC・ATtiny26Lに水晶発振子(クリスタル)あるいはセラミック発振子をつないでクロック源にする実験をしました。また、外部RC発振によるクロックもやってみました。
まず水晶発振子(クリスタル)によるクロックを試してみました。周波数は1MHzのものです。回路は下記のようになります。C1とC2は資料では12〜22pFとなっていますが、この範囲なら何でも良いという意味ではなく、回路の状態によって最適値を選ぶ必要があるそうです。そう言われてもよくわからないのでとりあえず今回は22pFにしました。
ヒューズビットは図の右に示したとおりです。周波数によって違います。見やすくするために4桁ずつ区切って書いてありますが、実際に入力するときは詰めて書いてください。1MHzの場合は「avrezusb -fl11111101」と入力します。「ckset.bas」を実行してクロック周波数を測定したところ、ぴったり1MHzになりました。
ヒューズビットを書き換える際は、マイコンICに何らかのクロックを与えて動作させておかなければなりません。したがって、前項の水晶発振器によるクロックから今回のクリスタルによるクロックに変更するときは、いったん内部発振に戻しておく必要があります。それと、特にブレッドボードで実験するときに気を付けてほしいのですが、クロックを外部発振に設定したままの状態で回路を解体するときは、クロックの種類が何だったか記録しておいてください。さもないと次にマイコンICを使うときに起動できなくなってしまいます。
次にセラミック発振子によるクロックを実験しました。セラミック発振子には2端子のものと3端子のものがあります。2端子のセラミック発振子は上記のクリスタルと同じ回路で使用します(ただしヒューズビットは下記)。3端子のセラミック発振子は2個のコンデンサを内蔵しているもので、これを使う場合の回路は下記の通りです。3本のうち中央の端子はGNDです。両側の端子に極性はありません。
今回は4MHzと8MHzのものをつないでみました。ヒューズビット書き換え時は「avrezusb -fl11001111」と入力します。セラミック発振子の周波数はクリスタルほど正確ではありません。実際のクロック周波数は下記のようになりました。
ATtiny26Lは内部にRC発振回路を持っていますが、外部に抵抗とコンデンサをつないで発振させることもできます。実際に使う機会があるかどうかわかりませんが、いちおう実験だけしてみました。回路は下記の通りです。RとCの値は、データシートで範囲が指定されています。
4通りのクロック周波数を実験しました。結果は下記の通りです。ヒューズビットの指定を間違えると、クロック周波数が大幅にずれてしまいます。
C | R | クロック周波数 | ヒューズビット | |
計算値 | 実測値 | |||
22pF | 33kΩ | 0.459MHz | 0.532MHz | 1110 0101 |
22pF | 15kΩ | 1.010MHz | 1.120MHz | 1110 0110 |
22pF | 6.8kΩ | 2.228MHz | 2.185MHz | 1110 0110 |
22pF | 3.3kΩ | 4.591MHz | 4.567MHz | 1110 0111 |
下に、一連の実験で使用した発振回路の部品の写真を掲げます。左から、3端子水晶発振器(DOC-49S3)、分周器内蔵水晶発振器(EXO-3)、水晶発振子、3端子セラミック発振子です。