プロが教えるわが家の防犯対策術!

PIC18F系でロータリーエンコーダのパルス数をカウントして制御するようにプログラムを
XC8で作成していますが、パルスのカウント抜けがあり、正確に制御できません。
なにか対策方法等あれば、教えて下さい。
条件は
①クロックはPLLを使用して、40MHzを使用しています。
②エンコーダの周波数は300~500Hz 3ケが常時同時入力される および原点リセット付き
③メインループの処理もシーケンス処理で重いのでエンコーダのカウントは割り込みを使わずに
 通常の入力ポートを使用し、メインループでエッジ検出、カウントを行っている
④割り込みはタイマー2ケとPCとの通信にUART1、その他とマイコンの通信にUART2を使用しています。
以上、よろしくお願いします。

質問者からの補足コメント

  • どう思う?

    その他の処理にも影響が出ていて、エンコーダの処理を割り込みに回すとメインの処理が止まる頻度があがり、よりその他の処理がNGになると思っています。影響はでないのでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2018/07/22 08:36

A 回答 (3件)

なぜ「メインのシーケンスが重いからエンコーダに割り込みを使わない」という思想になるのかさっぱりわかりません。


重いんだったら割り込み使わなきゃ取りこぼすのは当たり前でしょう。
この回答への補足あり
    • good
    • 1

現状でもメインの処理が止まってしまうことがあるって時点で、重すぎ・根本的な処理能力不足でシステムとして成立していないのではと思いますが…。

    • good
    • 0
この回答へのお礼

やはり、厳しいですよね ありがとうございます。マイコンを分けます。

お礼日時:2018/07/22 09:33

割り込みならエンコーダが動かないと全く処理が発生せず、他の処理の邪魔をしない。


ポーリングで取りこぼさないということは、必要量以上にポートチェックをしているので無駄もある。

割り込みこそ必要かつ最小限の処理で済むのではないですか?
    • good
    • 0
この回答へのお礼

一理ありますね。割り込みをしなくても、なにかテクニック等ないか、ヒント等ほしくて質問してみました。
ありがとうございます。別な人にも指摘があったように、現行のマイコンでは無理があるようです。
マイコンを分けて検討します。ありがとうございます。

お礼日時:2018/07/22 09:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!