« RX220マイコンで2相パルスカウント:グルグル回る角度を | トップページ | 卓上ボール盤、復活:こんなアイデアは? »

2018年6月18日 (月)

ロータリーエンコーダでグルグル回る角度を読み取る

RX220マイコンで2相パルスカウント:グルグル回る角度を の具体的なプログラムです。
  ※初期化部分は省略
このルーチン、最新カウント値が欲しい時だけでなく、オーバーフローをチェックするため定期的に呼び出してください。
  ※表示の関係で全角スペースを使っています

/****************************************/
/*   2相パルスカウント        */
/****************************************/
// 16bit up/downカウンタのオーバーフローをチェック
// 4逓倍で1回転1200パルス
long cnt_old;        // 前回カウンタ
WORD cnt_read;       // 読み出したカウント値 0~1199
WORD cnt_offset;      // カウンタオフセット値 0~1199
#define PLS_1200  1200  // 1200パルス/360度
#define PLS_CW   736   // CW: 65536 % 1200 = 736を加算
#define PLS_CCW   464   // CCW: 1200 - 736 = 464を加算

/***** カウンタ読み出し    *****/
// 0~1199の値を持ってリターン
// 16bitカウンタのオーバーフローをチェックしながら
// カウント1で0.3度
WORD cntread(void)
{
long cnt;
WORD a;
  cnt = (long)MTU1.TCNT;         // 16biカウンタ→longに
  if((labs(cnt - cnt_old)) >= 32768L){  // オーバーフロー発生
    P30_H;             // (!!!) P30 10pin H/L
    a = cnt_offset;         // オフセット値
    if(cnt < cnt_old){       // 右回転
      a = a + PLS_CW;       // +736
    }
    else{              // 左回転
      a = a + PLS_CCW;      // +464
    }
    cnt_offset = a % PLS_1200;   // 新オフセット値:1200で割ったあまり
  }
  else{                // 通常カウント
    P30_L;             // (!!!)
  }
  cnt_old = cnt;           // 次回チェック値
  a = (WORD)(cnt % PLS_1200);     // 16biカウンタ 1200パルスで割った余り
  cnt_read = (a + cnt_offset) % PLS_1200; // オフセット加算
  return cnt_read;          // 0~1199の値
}

※出力ポート「P30」にパルスを出すことで、オーバーフローのタイミングをオシロで観察できるようにしています。

|

« RX220マイコンで2相パルスカウント:グルグル回る角度を | トップページ | 卓上ボール盤、復活:こんなアイデアは? »

電子回路工作」カテゴリの記事

電子工作」カテゴリの記事

コメント

下間様をはじめ、ガレージ関係各位に被害はありませんでしたか?

被害に遭われた方々のお見舞いを申し上げます。

投稿: 被害は? | 2018年6月18日 (月) 19時19分

こちら生野区、まぁ無事です。
地域内では…
 壁が落ちた。
 屋根瓦がずれた。
 水道の配管がぁ
 貯水タンクがぁ
くらいの話が出ている(今、呑みながら)くらいです。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2018年6月18日 (月) 19時48分

被害が少ないようで安心しました。
パーツボックスなどが吹っ飛んでグチャグチャな
方などいらっしゃるようで、お気の毒に思ってました。
まだ、数日は震れがあるかもしれませんので、お気を付け下さい。

投稿: naoty | 2018年6月18日 (月) 21時03分

仕事場では…
出社してちょいとしてからの時刻、コーヒーを沸かしてカップに入れ飲み始めたタイミングでした。
仕事場は4階建てマンションの2階。
隣に保育園児らのいる若夫婦が住んでいます。
旦那さんはすでに仕事に出かけておられたんで、奥様とチビちゃんだけ。
「きゃ~」という声が聞こえたんで、「ドアは開けたままで! 火元は大丈夫?」などと声かけしてました。

仕事場では…
「大阪魂:パーツクリーナー」(背が高い)のスプレー缶が転がったくらいでした。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2018年6月18日 (月) 21時19分

お昼休み、ガレージの状態が気になって…
  一升瓶は無事か?
  ビールサーバーからビールが漏れ出してないか?
  アンテナは大丈夫か?
など、気になっていったん帰宅しました。
ガスの自動遮断機が働いてた、とのことでしたが復旧済み。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2018年6月18日 (月) 21時24分

昨日、たまたま地域の「救急救命講習会」がありまして、AEDの使用方法など皆さんと受講してきたばかりでした。
  ※過去、何度も受講してるんですが、こればかりは
   実践したことがありません。
昨日の今日ですんで、消防・救急のみなさんにはほんとに感謝します。

投稿: 居酒屋ガレージ店主(JH3DBO) | 2018年6月18日 (月) 21時48分

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: ロータリーエンコーダでグルグル回る角度を読み取る:

« RX220マイコンで2相パルスカウント:グルグル回る角度を | トップページ | 卓上ボール盤、復活:こんなアイデアは? »