最近、STM32F4をオーバークロックして250MHzで動かしていますが、クロックの設定等がうまくいっているかどうか確かめる方法がなかったため、周波数カウンタを自作しました。
マイコンかなり前に秋月電子通商で買って死蔵していたPIC32MX120F032B-I/SPを使用。周波数の表示は超小型LCDキャラクタディスプレイモジュールを使用。

回路構成
プローブから入力した信号は2SK241とバイポーラトランジスタで増幅した後、PICに入力します。PICのTIMER2,3で32bitカウンタを構成し、ゲートの1秒を作っています。今回はゲート時間は1秒固定。TIMER3,4で32bitカウンタを構成し外部からの信号を1秒間カウントします。今回のPICは40MHzで駆動しているのですが、TIMER3、4では同期カウンタなので計測可能な周波数は10MHz程度です。PIC内部のカウンタ前段の1/256のプリスケーラを利用することで2.56GHzまでは計測可能なはず(未確認)今回安物のプローブ買ったためにプローブの限界で計測可能な周波数は300MHzまでです。
製作中にLCDを壊してしまったため現在、左半分が読めません。次回秋月発注で交換予定(900円の物に500円の送料払いたくない)

主な部品
PICマイコン PIC32MX120F032B-I/SP 200円
超小型LCDキャラクタディスプレイモジュール(16×2行バックライト・オレンジ)[SD1602HUOB(-XA-G-G)] 900円
オシロスコープ・プローブ(300MHz) [TX5430A] 2500円
嘉穂パーツで買ったケース 約1000円

開発環境 MPLAB
コンパイラ C32

今回初めてPIC32シリーズを使いましたが、内蔵モジュールは16bitマイコンと同じです。ただ内蔵モジュールのピン割り当てはPIC24シリーズに比べると自由度が下がっています。

価格も安く使い勝手もよく、もっと早く作ればよかったと思います。

IMG_2239
IMG_2240