Taster entprellen

OP #1277604
Lesenswert?

Hallo zusammen,

Ich hab da ein Problem mit meinem Taster. MIt dem Taster starte ich 
einen Vorgang bei dem ich einen Motor anschalte und der dann über einen 
Umdrehungszähler zurückzählt (z.B. ab 15 Umdrehungen rückwärts). Die 
Umdrehungen die der Motor zählen soll werden über andere Taster 
eingestellt.
Mein Problem jetzt ist das ich mit dem Start Taster das ganze auch 
auslösen (anschalten) kann. Ich möchte aber auch gern wenn der Motor und 
alles läuft den Vorgang auch anhalten können, also Pause einlegen. Bei 
der Pause soll der Motor stoppen und die Umdrehungen sollen auch 
angehalten werden. Wenn der Motor läuft und ich den Taster betätige 
haltet er den Motor auch an aber nur wenn ich den Taster gedrückt halte 
und ich möchte es so das er beim einmaligen drucken stehen bleibt und 
ich nicht ihn gedrückt halten muss.
Mit debounce geht das ja aber ich hab den Port an dem der Taster 
angeschlossen ist schon belegt und ihn auch schon mit debounce entprellt 
aber das Anhalten/Pausieren muss ja bei mir im Programm nochmal 
entprellt werden.
Gibt es da auch eine andere Lösung den Taster zu entprellen?

Danke

Gruß
#1277644
Lesenswert?

Hallo Lars,

ja, gibt es, es gibt nämlich entprellte Taster, bei denen brauchst du in 
der Software nichts machen.
Am sonsten kannst du ja mit FlipFlops arbeiten, die werten dann halt 
eben nur die erste Flanke aus, danach sind sie fest gesetzt bis du sie 
zurücksetzt.
Eine weitere Möglichkeit besteht darin eine Einschaltverzögerung sowie 
Ausschaltverzögerung hintereinander zu schalten, damit kannst du dann 
beliebig entprellen.

Gruß
Josef
Gast #1277670
Lesenswert?

Dein Problem scheint mir weniger die Entprellung, als mehr die 
Flankenerkennung. Dadurch muß der Taster nicht ständig gedrückt werden, 
um ein Ereignis auszulösen. Ob Du mit der Flanke den Motor anhältst oder 
startest, ist dann zweitrangig.

if((Taster_Alt == gedrueckt) && (Taster == gedrueckt))
{
   Motor ^= 1; // Motor toggeln
   // wenn gelaufen -> stop
   // wenn gestoppt -> laufen
}
Taster_Alt = Taster;

Gruß Matthias
Gast #1277700
Lesenswert?

Die Forenteilnehmer prellen selbst auch irgendwie.

Das Thema wurde ja schon 1000* bis zum Erbrechen, Genervtsein und 
Wutanfall wiedergekaut.

Dies wird immer mehr zum Forum von 1001 Hausaufgabe, LED und 
programmiertem Flipflop.
Gast #1277737
Lesenswert?

> Die Forenteilnehmer prellen selbst auch irgendwie.

Solange sie die Zeche nicht prellen geht's doch noch. ;-)

Zum Thema:
BASCOM ist kinderleicht, wird einem zumindest an jeder Ecke gesagt...
Trotzdem bekommen viele BASCOM-Nutzer die einfachsten Dinge nicht 
gebacken. ;-(

Dein Problem:
Du müsstest einen Start/Stopp-Taster programmieren. Dazu brauchst Du 
neben der eigentlichen Entprellung noch eine Flankenerkennung, die 
wiederum Dein RUN-Flag toggelt, das dann den Motor (PWM) steuert 
(Startrampe, Bremsrampe).

Die 8-Tasten-Bulletproof-Entprellung von Peter Dannegger hat neben der 
eigentlichen (4-fach-)Entprellung auch die Flankenerkennung und (wenn es 
sein muss) auch noch eine Repeat-Funktion für längeren Tastendruck. 
Diese Routine ist in C und ASM in sehr effizienter Form verfügbar, in 
BASCOM sollte sie auch möglich sein, da aber vermutlich nicht so 
effizient.

...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren