Aktionen auf Button-Druck auslösen

Gast #297539
Lesenswert?

Hallo,

ich habe auf einem Board 4 User-Button. Je nach dem welcher Knopf
gedrückt wurde, möchte ich verschiede Aktionen auslösen. Wie formuliere
ich so etwas in VHDL. Kann ich einfach sagen:

if(button1 ='1) then
     aktion := 1;
elsif (button2 ='1') then
     aktion := 2;
end if;

if(aktion = 1) then
      .....
elsif (aktion =2) then
      .....
end if;

Kann das funktionieren ? Hat einer eine bessere Lösung ? Wie realisiere
ich bestimmte Aktionen auf Knopfdruck verschiedener Button ?

Danke !!!!
Gast #297540
Lesenswert?

Zuerst würde ich die Buttons entprellen.
Z.B. so :

signal button1_z1 : std_logic;
signal button1_z2 : std_logic;
signal button1_z3 : std_logic;
signal button1_out : std_logic;

..


if clk'event and clk = '1' then
  button1_z3 <= button1_z2;
  button1_z2 <= button1_z1;
  button1_z1 <= button1_in;

  -- abfrage für button gedrückt
  if button_z1 = '1' and button1_z2 = '1' and button_z3 = '0'
then
    button1_out <= '1';
  else
    button1_out <= '0';
  end if;

  -- abfrage für button losgelassen
  if button_z1 = '0' and button1_z2 = '0' and button_z3 = '1'
then
    button1_out <= '1';
  else
    button1_out <= '0';
  end if;

end if;

Die Entprellten Buttons würde ich dann eine State-Machine steuern
lassen. Damit hat man dann auch die möglichkeit auf eine
gedrückt-gehaltene taste zu reagieren (auto-repeat). allerdings sollte
man das entprellen der taste mit nur ca. 100Hz machen. Es macht kein
sinn eine Taste mit 50MHz oder mehr zu entprellen.

Gruß
Rene

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren