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.
> 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.
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
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.