mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Button Implementierung


Autor: V.H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: V.H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nach Entprellfunktion liefs wie gewünscht!
Danke euch!

greetz
V.H.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.