mikrocontroller.net

Forum: FPGA, VHDL & Co. Aktionen auf Button-Druck auslösen


Autor: Gregor P. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 !!!!

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.