invertorem (tuším 4049) před resetovací pinypolo_marco píše:upravit aj pre obvod cd4013?
Enkóder - riadenie
Moderátor: Moderátoři
Funkcia obvodu je O.K. ....cvičí jeden Q....na druhom je L a naopak.
Ak to má fachčiť s 12V vcc potom 4013 s invertormi pre SETy aj RESety oboch D-flopov. Inak je to zbytočnosť (keď stačí jedno púzdro74xx74)
Edit: Nějak takhle
Kód: Vybrat vše
SIGNAL IRCIN_t1 : STD_LOGIC_VECTOR(1 DOWNTO 0); -- Minuly stav IRC
SIGNAL IRCIN_t2 : STD_LOGIC_VECTOR(1 DOWNTO 0); -- Predminuly stav IRC
SIGNAL IRC_L : STD_LOGIC_VECTOR(7 DOWNTO 0); -- Citac puslu doleva
SIGNAL IRC_R : STD_LOGIC_VECTOR(7 DOWNTO 0); -- Citac puslu doprava
Kód: Vybrat vše
-- Osetreni rotacniho enkoderu
PROCESS (clk_10, RST_n)
BEGIN
IF RST_n = '0' THEN
IRCIN_t2 <= (OTHERS => '0');
IRCIN_t1 <= (OTHERS => '0');
IRC_L <= (OTHERS => '0');
IRC_R <= (OTHERS => '0');
ELSIF clk_10'EVENT AND clk_10 = '1' THEN -- Nabezna hrana na clk_10
IF (((IRCIN(0) XOR IRCIN_t1(0)) OR (IRCIN(1) XOR IRCIN_t1(1))) = '1') AND
(((IRCIN(0) XOR IRCIN_t2(0)) OR (IRCIN(1) XOR IRCIN_t2(1))) = '1') THEN
IRCIN_t2 <= IRCIN_t1;
IRCIN_t1 <= IRCIN;
IF (IRCIN_t2(0) AND IRCIN_t2(1) AND NOT IRCIN_t1(0) AND IRCIN_t1(1) AND NOT IRCIN(0) AND NOT IRCIN(1)) = '1' THEN
IRC_L <= IRC_L + 1;
END IF;
IF (IRCIN_t2(0) AND IRCIN_t2(1) AND IRCIN_t1(0) AND NOT IRCIN_t1(1) AND NOT IRCIN(0) AND NOT IRCIN(1)) = '1' THEN
IRC_R <= IRC_R + 1;
END IF;
END IF;
END IF;
END PROCESS;
- Přílohy
-
UpDownFilter.jpg- Roztrasený pohyb v pred.
- (40.1 KiB) Staženo 71 x