mikrocontroller.net

Forum: FPGA, VHDL & Co. 2 mal event in einem Prozess


Autor: Midnight (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Liebe Kollegen!

Ich habe eine RS232 und will gewisse Daten senden wenn ich eine Taste 
drücke. Das funktioniert super aber die Daten werden so oft gesendet bis 
ich die Taste loslasse. Normalerweise würde ich ein

if btn'event and btn = '0' (neg. Flanke)

verwenden aber das geht nicht in einem Prozess (mit State Machine), wo 
ich schon auf die steigende Taktflanke warte.

Wie mache ich das????


Danke
Midnight

Autor: kurz (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Würde einfach sagen, daß Programm ändern, so daß nur einmal gesendet 
wird.

Oder ist die Software nicht von Dir? Verstehst Du sie wenigstens?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Frage: Wird das senden der Daten über RS232 auf steigender Flanke 
gestartet, oder wird dabei etwas anderes ausgeführt?
Denn derzeit klingt es so als würde das senden bei einem High-Pegel und 
nicht bei einer Flanke passieren.

Autor: Nephilim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich würde das signal mittels systemclock absamplen und darüber die edges 
detektieren und sie dann als einfaches signal verwenden.

Autor: Midnight (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, ist von mir und ich bin ein Depp!

Ich brauch ja nur

elsif (clk'event and clk='1') then
if (button = '1' and button_pressed = '0') then
 -- Anw.
button_pressed := '1';
elsif (button = '0' and button_pressed = '1') then
button_pressed := '0';
end if;

Ich hab nicht daran gedacht.

DANKE

Autor: Michael Sauron (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
geht noch kürzer und übersichtlicher:
if rising_edge(clk) then
button_pressed <= button;
if (button = '1' and button_pressed = '0') then
 -- Anw.

Denk daran dass Taster prellen

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.