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
Würde einfach sagen, daß Programm ändern, so daß nur einmal gesendet wird. Oder ist die Software nicht von Dir? Verstehst Du sie wenigstens?
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.
ich würde das signal mittels systemclock absamplen und darüber die edges detektieren und sie dann als einfaches signal verwenden.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.