Hallo, eine kurze Frage. Habe ich eine übliche Tastaturmatrix-Schaltung (z.B. http://www.mikrocontroller.net/attachment/353/matrix.txt), und die Spalten sind GPIO-Ausgänge, dann sehe ich zu, dass sequentiell immer nur eine einzige Spalte auf 0 gelegt wird. Frage ich dann die vier Eingänge ab, sehe ich, welche Tasten in dieser Spalte gedrückt sind. Anschließend lege ich die Spalte wieder auf 1, und setze die nächste Spalte auf 0, um erneut die vier Eingänge abzufragen. Eine Taste schließt also immer einen Ausgang mit einem Eingang kurz. Wenn der Ausgang aber gerade auf 1 liegt (Spalte wird gerade nicht abgefragt), dann fließ bei gedrückter Taste ein Strom direkt vom Ausgang in den Eingang. Sind die Eingänge immer so hochohmig, dass ein Ausgang davon nicht überlastet wird? (Allgemeine Frage – speziell geht es mir um einen µC Atmel ARM mit Cortex M3).
Beginner schrieb: > Sind die Eingänge immer so hochohmig, dass ein Ausgang davon nicht > überlastet wird? Gegenfrage: macht ein niederohmiger Eingang an einem Mikrocontroller Sinn? Interessanter ist aber die Frage, was passiert bei einem Programmierfehler, wenn unbeabsichtigt beide Pins auf Ausgang geschalten sind und diese unterschiedliche Pegel haben ohne Widerstand dazwischen?
Alle Anschlüsse einer Matrix sollten entweder Ausgang-low oder Eingang mit Pullup sein, d.h. nie Ausgang-high. Sonst kommt es beim Drücken mehrerer Tasten zu Datenkämpfen.
Bestromer schrieb: > Gegenfrage: macht ein niederohmiger Eingang an einem Mikrocontroller > Sinn? Nein, macht natürlich keinen Sinn. Insofern gäbe es also nur ein Problem, wenn zwei Taster der gleichen Zeile gleichzeitig gedrückt werden, und deren beide Spaltenausgänge unterschiedliche Ausgangspotentiale haben. Also muss ich nach dem Lesen einer Spalte deren Ausgangspin immer wieder auf Eingang zurückschalten, bevor ich die nächste Spalte auf Ausgang und low lege. Danke!
Beginner schrieb: > Also muss ich nach dem Lesen einer Spalte deren Ausgangspin immer wieder > auf Eingang zurückschalten, bevor ich die nächste Spalte auf Ausgang und > low lege. Du schaltest die Spaltentreiber ein und aus, lässt sie aber immer auf Lo - dann ist die Sache sicher. Eine typische Matrix hat z.B. npn-Transitoren als Spaltentreiber, die jeweils eine Spalte mit GND verbinden, und die Zeilen sind jeweils mit einem Pullup-Widerstand und einem Eingang verbunden. Dann gibt es ein logisches Durcheinadnder, wenn mehr als eine Taste gedrückt ist (was man mit Dioden verhindern kann), aber keinen Kurzschluss. Entsprechend programmierst du deine Spalten-Ausgänge wie Open Collector Ausgänge. Hallo Klugscheisser: natürlich kann man Spalten und Zeilen vertauschen, funktioniert entsprechend. Georg
Beginner schrieb: > Sind die Eingänge immer so hochohmig, dass ein Ausgang davon nicht > überlastet wird? Ja.
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.