• 締切済み

PICについての質問です。使用PIC(PIC16F88)

PICについての質問です。使用PIC(PIC16F88) LEDを0.5秒点灯、0.5秒消灯させるプログラムを書いています。 追加でLEDを駆動するFETが故障してショートモードになったときを考えて、通電監視プログラムを 組み込みましたが、わからないところがあります。 タイマー1を使用して、0.1秒ごとに割り込み、通電検知させて、3秒連続して通電状態の場合はハード的にOFFにするという回路を組み込みました。 0.1秒ごとに割り込みさせて、通電と判断したらカウンターをカウントダウンさせて、0回になったらフラグをたてています。 メインルーチンで フラグチェック処理→0.5秒点灯、0.5秒消灯処理→(はじめに戻る)というフローにより、通電監視フラグを1秒ごとにチェックして、フラグが立ててあれば、強制的にOFFにします。 そのカウンターの設定値ですが、30回にすると3秒後の消灯になりません。いろいろ試した結果23回であれば、最短3秒後以降消灯できるようになりました。 自分で理解したいと思うのですが、なぜこれでうまくいくのかわかりません。 解説書、webも調べましたがわかりません。 どなたか推測でもいいので、教えていただけませんでしょうか?

みんなの回答

  • poyo3
  • ベストアンサー率30% (260/857)
回答No.2

やはりTIMER1の設定を確認でしょうか? プリスケーラーの設定、クロック周波数の確認、あとはTMR1のカウント数でしょうか? TMR1はアップカウントでオーバーフローすると割り込みがかかります。 設定が0Hであれば毎回問題はないですが他の値でカウントする場合は一度割り込みがかかった後に再セットする必要があったかと思いますのでその辺も確認してはどうでしょうか。

  • paspas
  • ベストアンサー率52% (47/90)
回答No.1

0.1秒周期の割り込みのつもりが、実はもう少し長い間隔なのではありませんか?

pats
質問者

お礼

ご指摘ありがとうございます。 割り込みタイミングチェックしてみます。 ありがとうございます。