FC2カウンター

現在の訪問者数

現在の閲覧者数:

カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -

プロフィール

剣菱P

Author:剣菱P
剣菱Pと申します。
性別:男
年齢:27
二兎を追って一兎も得られないタイプ

マイコンやプログラミング、ニコニコ動画、雑記等
方向性は見えずとも、ちょっとずつ更新していく予定です!

リンクフリーです。
こんなブログでよかったらよろしくお願いしま~す。

公開メール kenbishiP@gmail.com

検索フォーム

最新記事

最新コメント

カテゴリ

メールフォーム

名前:
メール:
件名:
本文:

月別アーカイブ

最新トラックバック

リンク

ブロとも一覧

ブロとも申請フォーム

ランキング

ランキング参加中です。気が向いたらクリックしてあげてください。


にほんブログ村 その他趣味ブログへ
にほんブログ村 その他趣味ブログ 趣味の工作へ

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

H8 3664 カウンタ»

コメント

コメントの投稿













管理者にだけ表示を許可する

CPLDとロータリーエンコーダ


ロータリーエンコーダには アブソリュートとインクリメンタルの方式があり

インクリメンタルのロータリーエンコーダをマイコンで使う時

H8などについてる位相計数モードを使えば簡単に読み込めますが、

それを使わないとちょっとめんどくさかったような記憶があります。自分だけだったりしてw

そこで、CPLDの練習もかねて、マイコンの負担を軽くするためにCPLDで信号を簡略化してみることにしました。

まずタイプ1:回転の信号を8ビットのパラレル信号で出力する


module enco(
    input FA,
    input FB,
    output [7:0] LED
    );
     reg [7:0] count;
   
        always @(posedge FA) begin
            if(FB == 1'b1)
                count <= count + 1'b1;
            else
                count <= count - 1'b1;
        end
        assign LED = count;
endmodule

タイプ2、回転方向を示す1ビット と カウントパルスを出力する1ビットの 2ビット出力

module enco(
    input FA,
    input FB,
    output [1:0] LED
    );
     reg cw;
        
        always @(posedge FA) begin
           
            if(FB == 1'b1)
                cw <= 1'b0;
            else
                cw <= 1'b1;
        end
       
        assign LED[1] = FA;
        assign LED[0] = cw;

endmodule


まだなれてないので、かなり難しく考えてしまい、いろんなエラーに悩まされてしまいましたが、

ある瞬間、そんなに難しく考えなくてもいいことに気がつく

プログラミングってこの瞬間がたまらないですよねぇ

プログラムの基本的な内容は A相が立ち上がった時にB相の状態を見て
0なら正回転 1なら逆回転とみなしてるだけです

タイプ1の動作
[広告] VPS


タイプ2の動作
[広告] VPS


一応どっちのタイプも ぱっと見た感じちゃんと動いているようですが、

見落としてる箇所がありそうな予感 たぶん平気だと思うけど、なにかもやもやする
スポンサーサイト

H8 3664 カウンタ»

コメント

コメントの投稿













管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。