【電子工作】100MHz周波数カウンタに挑戦#2 TINY414からAVR128DA28に移植 | トドお父さん通信

トドお父さん通信

北部九州在住 高BMI中高年のオタク趣味の活動記録

最近の電子工作の記録もNoteにまとめることにしました。 

今回はマイコンを使って周波数カウンタを作ろうとしています。

前回の記事はこちらです。
【電子工作】AVR128DA28で100MHz周波数カウンタに挑戦#1 ― 構想と方式選定 ―

前回は100MHz周波数カウンタの構想と方式選定について書きました。
このプロジェクトの基本になるのは、
technoblogy(David Johnson-Davies氏)のATtiny414周波数計の記事です。
100MHz Frequency Meter

まずは、ATtiny1614でDavid Johnson-Davies氏の非同期TCD方式の再現に成功しました。

15.997997 MHzの高精度表示が出て感動したんですが…
・低周波帯でTCBにOVF割り込みがない → レシプロカル方式併用が厳しい
・フラッシュ16KB・ピン数14ピンではギリギリすぎて拡張がほぼ不可能


というわけで、tinyAVR 1シリーズから、よりリソース豊富で高性能なAVR Dxシリーズの

AVR128DA28(Flash128kB・28ピン)に移植を開始します!
今回はまず、Davidさんの100MHz周波数計「非同期TCD 1秒ゲート方式」をAVR128DA28

でおなじレベルまで動かすところまで持っていきます。

 

 

今回の到達目標:

・測定方式:ダイレクトカウント方式
・ゲート時間:1.000秒(RTC基準)
・使用マイコン:AVR128DA28
・クロック:内部24MHz
・カウンタ:TCD0(非同期)
・結果出力:LCD (128x32表示)


回路構成
ブロック図
 

┌────────────────────────────────┐
│ 100MHz周波数カウンタ(ゲート方式)      │
├────────────────────────────────┤
│ ↓ 外部信号                   │
│ EXTCLK (PA0) → TCD0(12bit非同期カウンタ)   │
│ ↓ OVF                     │
│ OVF_CNT(16bit拡張ソフトカウンタ)       │
│ ↑ キャプチャ                  │
│ RTC(1秒ゲート)                 │
│ ↑                       │
│ 32.768kHz水晶                  │
│                         │
│ 結果 = (OVF_CNT << 12) | TCD0 = 28bit = 周波数 │
│                         │
└───────────────────────────────-─┘

 

回路図

画像
 

測定原理

TCD0が外部信号(PA0)を非同期カウント(12bit: 0~4095)

ソフトウェアカウンタでTCD0のOVFを加算し28bit化する

RTC OVF(1秒)→ EVSYSでTCD0をキャプチャ

すべてハードウェア完結 → CPU負荷ほぼゼロ(制御・表示のみ)


ここから先の検討の記録は備忘録としてNoteにまとめています。  
ぜひこちらからご覧ください。