このQ&Aは役に立ちましたか?
PIC(16F84A)を使用しての250Hz以上の周波数判定について
2023/10/15 21:37
- PIC(16F84A)を使用して外部からの信号(方形波)周波数を判定するプログラムを組みましたが、200Hz以上の周波数でLEDが正しく点滅しない不具合が発生しています。
- 問題の原因として、PICの処理速度が追いつかず、不安定な動作を引き起こしている可能性が考えられます。
- 対策としては、より高速なPICを使用するか、外部クロックを追加して処理速度を向上させることが挙げられます。
PIC(16F84A)を使用しての250Hz以上…
2008/12/05 05:20
PIC(16F84A)を使用しての250Hz以上の周波数判定について
16F84Aを使用して外部からの信号(方形波)周波数をRA2に入力して判定し、ある周波数以上であればRA2への入力信号がHiの時にRB0からHiを出力、Lowの時には出力しないというプログラムを組み、その先にトランジスタを取り付けてLEDを点滅させるというテストを行っています。
100Hz基準くらいの周波数の判定は順調に行えるようになりましたが、約200Hzを判定基準にすると、LEDが外部信号と同期しなくなりました。
誤動作といったほうがいいのかもしれませんが、安定しない動作を行います。200Hzの信号を入力しているのに、1Hzくらいの点滅を繰り返す・点灯しっぱなし・点灯しないetc. ←同じプログラムを焼いたPICでです。
外部発振子は20MHzのものを使用しています。
私は、PICの処理速度?が追いつかなくなったのかなと考察したのですがどういった原因が考えられますか?対策方法等はありますか?
PIC初心者なので、簡単な言葉で説明していただければ幸いです。
よろしくお願いします。
回答 (2件中 1~2件目)
毎度JOです。
前回投稿の続きでしょうか?
http://mori.nc-net.or.jp/EokpControl?&tid=196044&event=QE0004
Cでプログラムされていますか?
http://mori.nc-net.or.jp/EokpControl?&tid=192825&event=QE0004
100Hzでは判定出来るようですので、今回の場合 問題を切り分ける必要があります、
100Hzに於いて
1)100Hz以上の判定
2)ポートRA2の状態をRB0に反映させる
と言うような処理をさせているなら、1)が正確に行われているかを先ず確認しましょう、
1)100Hz以上を確認したら(例えばですが)RB1をHIとする
100Hz以下ならRBをLOとする
この状態で入力周波数を変化させ、オシロでRB1を確認すれば、100Hzの判定が正しく行われているか確認できます
当然の事ですが100Hz以上でRB1は変化してはいけません、このあたりも含めて検討されては??
このQ&Aは役に立ちましたか?
この質問は投稿から一年以上経過しています。
解決しない場合、新しい質問の投稿をおすすめします。
>ある周波数以上であればRA2への入力信号がHiの時にRB0からHiを出力、Lowの時には出力しないというプログラムを組み
?どのような考え方(アルゴリズム)で周波数を判定するプログラムでしょうか。
?前のご質問を参照すると,そのプログラムは100Hzを閾値として,
100Hz以下と,100Hz以上を検出するものと想像します。
100Hzを少し超える周波数を入力すると所望の判定を行うが,200Hz
付近の周波数を入力すると今回記載された状態になると言うことですか?
?前項の通りの状況であれば,100Hzから200Hzの中間の周波数での
挙動は如何ですか,また200Hzを超える周波数での挙動は如何ですか?
(200Hz付近ピンポイントの不審な動作かどうか)
??項の質問の補足ですが,組んだプログラムの設計上の周波数分解能はどの
程度ですか?もう少し具体的に言うと,95Hz以下では周波数<低>と判定し
105Hz以上では周波数<高>と判定,その間の周波数では判定は定まらない
のような性質があろうかと想像しますが,判定が定まらない周波数の幅(ある
いはその逆数の時間の幅)は,プログラム設計上いくらになっているのでしょうか?
質問ばかりで済みません。宜しくお願いします。