{{publish any}} !header ここ数日の続きで、秋月電子のMAX038を使った精密波形オシレータキットの発振周波数を表示する周波数カウンタをワンチップマイコンのAVRを使って作ります。 !body ワンチップマイコンには、AVRかPICか迷います。フリーの開発環境に優位性があったAVRですが、先日、PIC24を調達したことにより、PICもフリーの開発環境が構築できます。 とりあえず、周波数カウンタ機能を内蔵したLCメーターの製作で使用したAVRを使うことにして開発を進めます。 {{image DSC00978.jpg,,,size:50%}} 時計用クリスタル発振器の32.768KHzを入力してみました。正確にカウントされているようです。比較のために奥底から取り出した市販周波数カウンタと比較しても問題ないようです。(ちなみに市販周波数カウンタは、5年前に校正期限が切れています。^^;) で、せっかく28ピンもあるAVRを使うのなら、周波数のレンジ切り替えもマイコンで切り替えてやろうと、リレーを使った発信用コンデンサ切り替え回路も作成しました。 {{image DSC00980.jpg,,,size:50%}} キットに付属のコンデンサは、セラミック、積層セラミック、電解コンデンサとなっていましたが、一応、フイルムタイプをメインにしたものに変更しました。ただし、最高周波数のレンジをカバーする20pFは、通常のセラミックコンデンサです。また、1μFは、積層メタライズドフィルム??となっています。 {{image DSC00981.jpg,,,size:50%}} が、・・・・しかし、・・・2.8MHz以上がカウントできません。 プログラム的には、8ビットx16ビットで16MHz程度までカウントできるはずですが、なぜか動作しません。 しかたがないので、内蔵プリスケーラで分周しようとデータシート読んでみると、PICのプリスケーラのようには使用できないようです。弱ったな。 外部にプリスケーラをつけるしかないのかな。