PIC周波数カウンターの製作4


 PICマイコン周波数カウンターを使用してVFO周波数を測定してみると気になる点がありました。ソフト初心者としては何が悪い のか3ヶ月近くも悩んでやっと解決できました。
今回はマイコン初心者のトラブル事例を紹介します。
  問題点
   PICの参考書に書かれているプログラムを参考にして、自分なりの仕様でプログラムを作ってみました。
 それなりに動作しますが、VFO周波数をゆっくり変化していくと、ところどころでホンの一瞬ですが、100Hzから10KHz桁のLED 表示がちらつきます。
例えば7.023.4の下3桁を表示で23.4を表示している場合、VFOをゆっくり変化させると次は23.5を表示すべきところ、一瞬1*.* と表示がちらついてから23.6などの表示に変わります。
 周波数カウンターとしてスポット的な周波数を測定している場合には気がつきませんが、VFO周波数などのようにゆっくりと変化 させる周波数をモニターする場合はどうしても気になります。
 このちらつきはある決まって関係の周波数で出るようで、ソフト的な要因と推測されますが、どの記事も決まったようなソフト になっていますので、なかなか見つけられませんでした
PICカウンター ソフト例
 一般に公開されているカウンター主要プログラム例は決まったように左のようになっています。
 ループカウンターを必要なゲート時間分ループさせて、その間に内部カウンターのオーバーフロー数をBYTE1,BYTE2レジスタに 加算していきます。
 設定カウントに達したらループから抜けて、次の処理に移ります。一般にはプリスケーラー分だけ何倍かにす るフローが続きます。
問題箇所
 左のプログラムでは、ループから抜ける直前のループで、BTFSS時点ではオーバーフローしていないが(例えば内部カウンター FEH)ループから抜ける直前にはFFHから00Hとなる場合、内部カウンターからのCARYはBYTE1,2レジスタには加算されず、 データーは一瞬不連続な値になり、表示もちらついてしまいます。
 プリスケーラーで1/4にしていますので内部カウンターがFFとなるのは、約10KHzごと。7.023.4MHz、7.033.4MHz付近でオーバー フローのカウントがミスカウントします。
対策
 ループから抜けてゲートを閉じた後、もう一度内部カウンターのCARYをチェックする処理を追加したところ、表示ちらつきも 無くなりやっと解決できました。
 追加処理は、左のプログラムと同様の処理です。
 BTFSSでチェックしオーバーフローがあれば、BYTE1,2に加算する、オーバーフローが無ければRETURNというプログラムを追加 しました。
 
 全体のプログラムを早くアップしたいのですがもう少し手直ししたいところがあります。  次回までには完成させなければ、、、、、。
Top Menu

PIC周波数カウンターの製作5へ