www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller: Gleichzeitiges Drücken von zwei Tastern ??


Autor: Marcus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo !

Habe mir eine Aufzug-Steuerung mit Ein-, Ausgangskarten und
Mikrocontroller (Infineon SAB80C537) gebaut.
Ich habe leider nur 3 Eingänge für 3 Taster vorgesehen (E0=Fahre in
Obergeschoss, E1=Fahre in Erdgeschoss, E2=Fahre in Keller) - nun
brauche ich aber doch 4 Taster (möchte noch ein Menü integrieren), habe
aber keine freien Eingänge mehr.
Um dieses Problem zu lösen, habe ich den 4. Taster (=Menue-Taster) so
verdrahtet, dass dieser "gleichzeitig" zwei Eingänge (E1=Fahre
Obergeschoss, E2=Fahre Keller) mit High-Pegel verbindet. Wie ich mir
schon gedacht habe, kommen die beiden nicht zur absolut gleichen Zeit.
Deshalb erkennt der Controller nur gelegentlich die "Taste Menue".

Hier seht Ihr einen Auszug aus meinem C-Code zur Erkennung einer
positiven Flanke (Hervorgerufen durch einen/mehreren Taster). Wie
gesagt funktioniert dies sehr unsicher.

while(TRUE)
{
new_byte = P7 & 0x07;   // P7 ist Port7: E0...E7
edges = old_byte ^ new_byte;
global_pos_edges = edges & new_byte;

// Bei Erkennung von einem der beiden Eingänge, nochmals Kontrolle, ob
nicht der zweite jetzt auch noch High-Pegel hat
if(global_pos_edges == 0x02)
{
  if(P7 & 0x04)
    global_pos_edges = 0x06;
}

// Bei Erkennung von einem der beiden Eingänge, nochmals Kontrolle, ob
nicht der zweite jetzt auch noch High-Pegel hat
if(global_pos_edges == 0x04)
{
  if(P7 & 0x02)
    global_pos_edges = 0x06;
}

switch(global_pos_edges)
{
  case 0x01:  to_og();
    break;
  case 0x02:  to_eg();
    break;
  case 0x04:  to_ke();
    break;
        case 0x06:  enter_menue();
                break;
}
old_byte = new_byte;
}


Habt Ihr vielleicht einen Tip für mich, wie ich sicher Erkennen kann,
dass zwei Taster gleichzeitig gedrückt sind ?

Vielen Dank im voraus für Eure Antworten !

Gruß

Marcus

Autor: Matthias H. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich würde bei Erkennen eines Tastendrucks eine kurze Zeit warten und
dann die Tasten nocheinmal abfragen.

Autor: Paule (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Direkt helfen kann ich dir nicht.
Aber vielleicht hilt dir ja das:
http://fernando-heitor.de/pic/tipstricks/schaltung...

Autor: A.K. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du 2 Ausgänge findest, deren Zustand zum Zeitpunkt der Abfrage der
Taster unwichtig ist (z.B. ein LCD-Datenbus), dann siehe Anhang.

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.