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


von Midnight (Gast)


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

von kurz (Gast)


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?

von Gast (Gast)


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.

von Nephilim (Gast)


Lesenswert?

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

von Midnight (Gast)


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

von Michael Sauron (Gast)


Lesenswert?

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

Denk daran dass Taster prellen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.