とりあえずメモ程度に
時間があればまた加筆します
PIC16F88を使った場合の方法
エンコーダのRE1をPORTB0にRE2をPORTB1に接続
配線は普通のロータリーエンコーダと同じようにプルアップで接続
またチャタリング処理がめんどくさいので
RE1/RE2共に0.1μF程度のパスコンでGNDに接続
そしてプログラムはRB0の割り込みを使って回転を検出
RB0の立ち下がりエッジで割り込みに設定
割り込みがかかれば10mS程度おいてからRB1の状態を確認します
例えば回転方向によって変数"cnt"を増減させたい場合は
/* **** */
if (RB1) cnt++;
else cnt--;
/* **** */
っていうふうにしておけばある程度は検出可能です
そしてこの後チャタリング対策としてさらに10mSから20mS程度放置してから
RB0の割り込みフラグを0に戻して割り込み処理を終了します
それからシリアル送信中とかに割り込みがかかると大変なので
シリアル送信開始時にRB0の割り込みを停止させて
送信終了時に割り込みを再許可するなど
工夫は必要
そこら辺は各自試してみてください
時間があれば回路図とソースとかもうpするかも
0 件のコメント:
コメントを投稿