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
ich würde bei Erkennen eines Tastendrucks eine kurze Zeit warten und dann die Tasten nocheinmal abfragen.
Direkt helfen kann ich dir nicht. Aber vielleicht hilt dir ja das: http://fernando-heitor.de/pic/tipstricks/schaltungsbeispiele/tristate1input.htm
Wenn Du 2 Ausgänge findest, deren Zustand zum Zeitpunkt der Abfrage der Taster unwichtig ist (z.B. ein LCD-Datenbus), dann siehe Anhang.
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.