Forum: Mikrocontroller und Digitale Elektronik Wie feststellen ob Taste länger als 2 Sek. gedrückt?


von Malte Struebert (Gast)


Lesenswert?

Hallo,

ich muss eine Menüsteuerung realisieren. Dabei sind einige Knöpfe
doppelt belegt, d.h. funktion 1 bei Tastendruck ca. 0,5sek und Funktion
2 bei Tastendruck länger als 2 sek.

jetzt die Frage wie kann ich sowas in C am besten ohne externe
interrupts realisieren ohne mir dabei alle möglichkeiten des
Programmablaufs zu verbauen (stichwort warteschleife etc.)?

einen internen Timer habe ich zur Verfügung.

evtl. kann jemand nen kurzen Codesample posten oder mailen falls jemand
schon sowas gemacht hat.

Gruß
Malte.

von J.St. (Gast)


Lesenswert?

Hallo,
also wenn der interne Timer sowie so benutzt wird, dann liegt der
folgende Lösungsansatz sehr nah:

Der Timer ruft aller n ms (z.B. 100ms) einen Timer-Interrupt auf. Die
Funktion die dann aufgerufen wird, inkrementiert eine globale Variable
(also z.B. TIMER_KEY_COUNT++;) so lange, wie auch die Taste gedrückt
wird. Hat diese Variable einen Wert x erreicht (hier z.B.: if
(TIMER_KEY_COUNT>=20) { /* Taste wurde 2 Sekunden gedrückt */ }), dann
erfolgt die Entscheidung.

J.St.

von Malte Struebert (Gast)


Lesenswert?

Stimt, hab die ganze Zeit andersrum gedacht... aber so gehts... manchmal
hat man gerade bei sowas einfach n Brett vorm Kopf ;-)

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.