Forum: Mikrocontroller und Digitale Elektronik Button Implementierung


von V.H. (Gast)


Lesenswert?

Hallo,

kann mir vielleicht jemand bei meinem Codeproblem helfen?
Hab grad nen Hänger..
Hab nen Taster auf Eingang geschaltet und möchte nen andren Ausgangport 
damit ansteuern, man wird mich vielleicht auslachen, aber irgendwie 
krieg ichs nicht hin, dass mein ausgelöster Zustand beim drücken des 
Tasters stabil bleibt.
Sprich: Man muss den Taster gedrückt halten, damit mein Ausgangsport auf 
"high" ist..
Möchte aber, dass wenn ich den Taster betätige und der Ausgangsport auf 
Low ist High wird... so bleibt bis ich den Taster wieder betätige und 
dann auf Low geht usw.
Hier der Programmausschnitt:

    ...
    volatile unsigned int but = 0;
    ...
    if( (P1IN & 0x02) && (P1OUT&(~0x01)) && but==0){
       BUTTON_HIGH;
       but=1;
    }
    if( (P1IN & 0x02) && (P1OUT | 0x01) && but==1){
       BUTTON_LOW;
       but=0;
    }

Mir ist irgendwie schon klar, dass durch diesen Code immer verlangt 
wird, dass mein Eingangspin (Taster) gedrückt wird, aber irgendwie komm 
ich nicht auf den Zusatz wie ich ihm sag -> "du bist gedrückt worden, 
also veränder deinen Zustand komplett"...
Danke im vorraus für rasche Antworten!

Greetz
V.H.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

> dass mein ausgelöster Zustand beim drücken des Tasters stabil bleibt.
Von prellenden Tastern hast du schon gehört?
(Das ist jetzt gerade nicht dein Problem, es könnte aber noch eins 
werden...)

Das Gute daran: du bist nicht der erste, der dieses Problem hat ;-)
Such mal hier im Forum nach der Tasterentprellung von Peter Danegger.

von Ralf (Gast)


Lesenswert?

Ist relativ einfach, wenn du erkennst, dass der Taster gedrückt wurde 
(also entweder mit steigender ODER fallender Flanke), änderst du den 
Zustand einer Variablen von z.B. 0x00 nach 0x01 und umgekehrt. Oder du 
änderst direkt den Zustand des Ports. Du darfst aber nur bei einer der 
Flanken ändern, sonst hast du wieder Taster- anstatt 
Schalterverhalten...

Ralf

von V.H. (Gast)


Lesenswert?

Nach Entprellfunktion liefs wie gewünscht!
Danke euch!

greetz
V.H.

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.