電子工作etc


【PIC18F1320】

 ■周波数カウンタV9(PIC18シリーズ最小)
  ★概要
    PIC16Fシリーズには、16ビットのタイマーモジュールが、1個しかなく、また、タイマーの制御(ON/OFF)が貧弱
    なため、周波数カウンタのように、
      ・ゲートタイム用のタイマーモジュール(ON/OFF制御)
      ・周波数カウント用のタイマーモジュール(ON/OFF制御)
    を実現しようとすると、結構煩雑(意にそぐわない)な処理が必要となります。

    PIC18Fシリーズでは、16ビットのタイマーモジュールが、2個に強化され、且つ、タイマーの制御(ON/OFF)も
    可能となり、周波数カウンタの実現には、とても便利になりました。

    今回は、PIC18Fシリーズでは、最もピン数の少ない、PIC18F1320(18ピン)を使用し、出来るだけコンパクトに
    仕上げてみました。

    <仕様>
     ・ゲートタイム切り替え(1秒/0.1秒)
     ・-455kHz切り替え(有/無)
     ・表示切替(Hz/kHz)
     ・測定範囲(10Hz〜60MHz)

  ★動作原理
    <ゲートタイム
     ECCPモジュールとTIMER1を組み合わせ、コンペアモードで使用することにより、0.1秒の周期割り込み
     を発生させる。割り込みを、フリーランさせることにより、測定の開始と完了の処理を単純化させる。
       :測定の開始(測定処理 → 割り込み処理へ指示)
       :測定の完了(割り込み処理処理 → 測定処理へ指示)

    <周波数カウント
     TIMER3と32ビットの変数(freq)を組み合わせ、周波数をカウントする。TIMER3でオーバーフローが発生する
     都度に、freq変数をインクリメント(+1)する。測定完了後に次式により周波数を求める。
       freq=(freq×65536)+(TMR3H×256)+TMR3L

  ★回路図
     

  ★プログラム
    ソースリストはここです。
    HEXリストはここです。

  ★動作確認
     
     
    32MHzを測定してみました。
    左上:ゲートタイム=1秒、Hz表示
    右上:ゲートタイム=0.1秒、Hz表示
    左下:ゲートタイム=1秒、kHz表示
    右下:ゲートタイム=1秒、kHz表示、-455kHz
     
     
    左側:60MHz
    右側:40MHz
     
    左側:32MHz
    右側:20MHz
     
    左側:100kHz
    右側:10kHz
     
    左側:1kHz
    右側:100Hz
     
    左側:10Hz
    右側:5Hz
     
    如何ですか?
    ハードもソフトも、かなりシンプルに仕上がりましたね。{^_^}!



トップへ
戻る



電子工作etc