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ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

16F877A 複数サーボ»

コメント

コメントの投稿













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

CPLDでデマルチプレクサ


サーボをPICで複数扱うためにデマルチプレクサをCPLDで作ってみました。

まだまだCPLDの開発になれずにかなり苦労しましたが、
出来てみれば、なんてことは無いものでした

demult.jpg

プログラムは


library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity main is
    Port ( IN_PWM : in  STD_LOGIC;
           SELECT_PIN : in  STD_LOGIC_VECTOR (2 downto 0);
           OUT_PWM : out  STD_LOGIC_VECTOR (7 downto 0));
end main;
       
architecture Behavioral of main is
        signal SELECT_SIG : std_logic_vector(2 downto 0);
        signal OUT_SIG : std_logic_vector(7 downto 0);
        signal PWM_SIG : std_logic;
begin
        SELECT_SIG <= not SELECT_PIN;
        PWM_SIG <= not IN_PWM;
        process(SELECT_SIG,PWM_SIG)
        begin
            case SELECT_SIG is
                when "000" => OUT_SIG(0) <= PWM_SIG; OUT_SIG(7 downto 1) <= "0000000";
                when "001" => OUT_SIG(1) <= PWM_SIG; OUT_SIG(7 downto 2) <= "000000"; OUT_SIG(0) <= '0';
                when "010" => OUT_SIG(2) <= PWM_SIG; OUT_SIG(7 downto 3) <= "00000";  OUT_SIG(1 downto 0) <= "00";
                when "011" => OUT_SIG(3) <= PWM_SIG; OUT_SIG(7 downto 4) <= "0000";   OUT_SIG(2 downto 0) <= "000";
                when "100" => OUT_SIG(4) <= PWM_SIG; OUT_SIG(7 downto 5) <= "000";    OUT_SIG(3 downto 0) <= "0000";
                when "101" => OUT_SIG(5) <= PWM_SIG; OUT_SIG(7 downto 6) <= "00";     OUT_SIG(4 downto 0) <= "00000";
                when "110" => OUT_SIG(6) <= PWM_SIG; OUT_SIG(7) <= '0';               OUT_SIG(5 downto 0) <= "000000";
                when "111" => OUT_SIG(7) <= PWM_SIG; OUT_SIG(6 downto 0) <= "0000000";
                when others => null;
            end case;
        end process;
       
        OUT_PWM(7 downto 0) <= not OUT_SIG(7 downto 0);

end Behavioral;



notで反転してるのは実験のスイッチやLEDの都合、実際はnotを解除して使用。

このプログラム自体は難しくは無かったのですが、開発環境の操作にまだなれてなくて
かなり苦戦。

いくら書き込んでもまったく思い通りに動作しない。

原因は何かといえば、別のプロジェクトのファイルを書き込んでいたというマヌケっぷり
そんなことになぜか1時間近く気がつかず

プログラムをいろいろ変更しては ため息をつく繰り返し

どっと疲れたけど、 うまくいくとそれも吹き飛んじゃうんですよね。

とりあえずあとはPIC側のプログラムを組んでCPLDと合体させればおkかな。

[高画質で再生]

CPLDの練習 : デマルチプレクサ

[広告] VPS


スポンサーサイト

16F877A 複数サーボ»

コメント

コメントの投稿













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


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