-
Eine
häufig
anzutreffende Art von Eingabegerät
des Tastaturtyps (Keyboard-Typs) enthält eine Matrix von Signalleitungen,
die in einer Reihe sich überlappender
Zeilen und Spalten angeordnet sind. Die Zeilen und Spalten von Signalleitungen
sind so positioniert, daß sie
an mehreren Schnittpositionen nahe aneinander vorbeilaufen, wobei
sich jede der Schnittpositionen unter einer Taste auf der Tastatur befindet.
Die Betätigung
einer Taste auf der Tastatur bewirkt, daß die Zeilenleitung und Spaltenleitung,
die an der Schnittposition unter der Taste aneinander vorbeilaufen,
miteinander in Kontakt kommen und somit einen durch die Zeilenleitung
und die Spaltenleitung, die unter dieser Taste vorbeilaufen, gebildeten
Schalter schließen.
In kompakten Geräten
enthält die
Tastatur in der Regel zwei Mengen von Folienstreifen, die rechtwinklig
zueinander ausgerichtet sind, so daß, wenn eine Tastatur betätigt wird,
die sich schneidenden Folienstreifen zusammengedrückt werden,
um so den Schalter an dem Schnittpunkt zu schließen.
-
Bei
einem herkömmlichen
Verfahren zum Abfragen einer solchen Tastatur wird sequentiell cm Signal
an jede von einer der Mengen von Signalleitungen angelegt während die
entgegengesetzte Menge von Signalleitungen gelesen wird, um zu bestimmen,
welche Taste oder Tasten betätigt
wurden. Zum Beispiel kann ein Signal in Form einer Spannung mit
hohem Pegel, das eine binäre
1 darstellt, sequentiell an jede der Spaltenleitungen angelegt werden.
Die Zeilenleitungen werden überwacht,
um ein Signal zu erfassen, das anzeigt, daß eine oder mehrere der Zeilenleitungen
das Signal mit hohem Pegel zeigen, wodurch angezeigt wird, daß diese Zeilenleitung
elektrisch mit einer Spaltenleitung gekoppelt wurde, an die das
Signal mit hohem Pegel angelegt worden ist. Durch ein Erfassen der Änderung
auf einer der Zeilenleitungen und ein Bestimmen, an welche Spalte
das Signal angelegt wurde, kann man bestimmen, welche Spaltenleitung
und welche Zeilenleitung in Kontakt gekommen sind, um zu identifizieren,
welche Taste betätigt
wurde.
-
Herkömmliche
Tastaturabfragen (Tastatur-Scann-Vorgänge) weisen jedoch Unzulänglichkeiten
auf. Ein besonderes Problem bei batteriebetriebenen Geräten ist
erstens, daß umso
mehr beim Abfragen der Tastatur verbraucht wird, je länger ein Signal
beim Identifizieren, welche Taste betätigt wird, angelegt werden
muß. Wenn
insbesondere mehrere Tasten gleichzeitig betätigt werden, verbrauchen sowohl
der durch die gekoppelten Signalleitungen fließende Strom als auch der zum
Versorgen des Tastaturabfragesystems verwendete Strom merklich Leistung.
Zweitens können
die an die Tastatur angelegten Signale zu unkontrollierten Kurzschlüssen führen. In kompakten
Geräten,
die eine Tastatur des Folientyps verwenden, können die in dichtem Abstand
liegenden Folienstreifen kurzgeschlossen werden, wodurch sowohl
Leistung verschwendet wird als auch falsche Tastenbetätigungssignale
gegeben werden. Drittens kann die Betätigung einer Taste zu Signalübersprechen
zwischen angrenzenden Leitungen führen, das zu einer falschen
Identifikation führt,
welche Taste oder Tasten betätigt
wurden. Signalübersprechen
tritt bei kompakten Tastaturen des Folientyps aufgrund der kurzen
Distanzen zwischen den Zeilenleitungen und Spaltenleitungen im Gegensatz
zu den relativ viel längeren
Signalleitungen, die sie verbinden können, häufig auf.
-
Die
Aufgabe der vorliegenden Erfindung besteht darin, ein Konzept für eine verbesserte
Tastaturabfrage zu schaffen.
-
Diese
Aufgabe wird durch ein Verfahren nach Anspruch 1, eine Vorrichtung
nach Anspruch 9, ein Verfahren nach Anspruch 22 und ein Computerprogrammprodukt
nach Ansprüche
23 und 24 gelöst.
-
Die
vorliegende Erfindung schafft ein Verfahren bei dem ein erstes Signals
an eine Mehrzahl erster Leitungen angelegt wird. Ein zweites Signal
wird an eine Mehrzahl zweiter Leitungen angelegt. Mindestens einer
der zweiten Leitungen wird als eine Leitung identifiziert, die ein
von dem zweiten Signal verschiedenes Signal aufweist. Ein Abfragesignals wird
an die identifizierte zweite Leitung angelegt und mindestens eine
ersten Leitung, die ein Signal zeigt, das anzeigt, daß sich mindestens
eine erste Leitung in Kontakt mit der identifizierten zweiten Leitung,
an der das Abfragesignal angelegt ist, befindet, wird identifiziert,
wobei mindestens eine der Mehrzahl von Tasten als die Kopplung der
identifizierten zweiten Leitung und der mindestens einen identifizierten
ersten Leitung verursachend identifizierbar ist
-
Bei
einem Ausführungsbeispiel
kann beim Identifizieren der mindestens einen zweiten Leitung für ein vorbestimmtes
Intervall ein aktives ersten Signals an die ersten Leitungen, wobei
das aktive erste Signal durch Koppeln der ersten Leitungen mit einer Quelle
des ersten Signals angelegt wird, und ein aktives zweites Signals
an die zweiten Leitungen angelegt werden, wobei das aktive zweite
Signal durch Koppeln der zweiten Leitungen mit einer Quelle des zweiten
Signals angelegt wird.
-
Beim
Identifizieren der Mehrzahl zweiter Leitungen, die ein von dem zweiten
Signal verschiedenes Signal zeigen, kann ferner cm Verfolgen von
jeder identifizierten zweiten Leitungen durchgeführt werden. Das Verfolgen kann
bei einem Ausführungsbeispiel
ein Speichern einer Liste jeder der identifizierten zweiten Leitungen
umfassen.
-
Ferner
kann bei einem Ausführungsbeispiel für jede der
Mehrzahl identifizierter zweiter Leitungen, eine nächste zweite
Leitung, an die das Abfragesignal nicht angelegt wurde, identifiziert
werden, wobei jede der Mehrzahl identifizierter zweiter Leitungen
mit Ausnahme der nächsten
identifizierten zweiten Leitung von der Quelle des zweiten Signals
elektrisch entkoppelt werden. Das Abfragesignal wird daraufhin an
die nächste
zweite Leitung angelegt.
-
Das
erste Signals kann erneut an jede der Mehrzahl erster Leitungen
vor dem Anlegen des Abfragesignals an die nächste identifizierte zweite
Leitung angelegt werden.
-
Bei
einem Ausführungsbeispiel
wird eine Tastenmaskierungssituation identifiziert, wobei zum Identifizieren
der Tastenmaskierungssituation ein Bestimmen durchgeführt wird,
ob mehr als eine der ersten Leitungen ein Signal zeigt, das einen
Kontakt mit der identifizierten zweiten Leitung, an die das Abfragesignal
angelegt ist, anzeigt. Wenn mehr als eine der ersten Leitungen ein
Signal zeigen, das Kontakt mit der identifizierten zweiten Leitung,
an die das Abfragesignal angelegt ist, anzeigt, wird ein Bestimmen durchgeführt, ob
die Mehrzahl identifizierter zweiter Leitungen von der gespeicherten
Liste der identifizierten zweiten Leitungen verschieden ist.
-
Ferner
kann die Mehrzahl erster Leitungen eine Mehrzahl von Zeilenleitungen
und die Mehrzahl zweiter Leitungen eine Mehrzahl von Spaltenleitungen
sein oder alternativ die Mehrzahl von ersten Leitungen eine Mehrzahl
von Spaltenleitungen und die Mehrzahl von zweiten Leitungen eine
Mehrzahl von Zeilenleitungen sein.
-
Die
Erfindung schafft auch ein Computerprogrammprodukt mit auf einem
maschinenlesbaren Träger
gespeicherten Programmcode zur Durchführung des obigen Verfahrens,
wenn das Computerprogrammprodukt auf einem Rechner abläuft.
-
Die
Erfindung schafft ferner eine Vorrichtung mit einem ersten Leitungstreiber,
der eingerichtet ist, um ein erstes Signal an eine Mehrzahl von
ersten Leitungen anzulegen, und einem zweiten Leitungstreiber, der
eingerichtet ist, um ein zweites Signal an eine Mehrzahl von zweiten
Leitungen anzulegen, die zweiten Leitungen zu überwachen und bei Erfassen eines
von dem zweiten Signal verschiedenen Signals auf mindestens einer
der Mehrzahl von zweiten Leitungen eine Abfrage einer Tastatur einzuleiten.
Ferner kann die Vorrichtung eingerichtet sein, um ein Betätigen des
ersten Leitungstreibers und des mindestens einen zweiten Leitungstreibers
durchführen,
um einen Kurzschluß für ein vorbestimmtes
Intervall zu erzeugen, um ein Übersprechen
zwischen beliebigen der Mehrzahl von ersten Leitungen und der Mehrzahl von
zweiten Leitungen zu löschen.
Darüberhinaus kann
die Vorrichtung mindestens eine zweite Leitung, die ein von dem
zweiten Signal verschiedenes Signal zeigt, identifizieren und ein
Abfragesignals an die mindestens eine identifizierte zweite Leitung
anlegen. Hierbei wird mindestens eine ersten Leitung, die ein Signal
zeigt, das von dem ersten Signal verschieden ist, identifiziert
wodurch angezeigt wird, daß sich die
identifizierte zweite Leitung in elektrischem Kontakt mit der mindestens
einen identifizierten ersten Leitung befindet, wobei eine Kombination
der mindestens einen identifizierten zweiten Leitung und der mindestens
einen identifizierten ersten Leitung anzeigt, daß mindestens eine Taste der
Tastatur betätigt wurde.
Das erste Signal kann ein Hochpegel-Spannungssignal und das zweite
Signal ein Niedrigpegel-Spannungssignal
sein oder das erste Signal kann einen Niedrigpegel-Spannungswert
sein und das zweite Signal einen Niedrigpegel-Spannungssignal sein.
-
Ferner
kann das erste Signal ein erstes aktives Signal umfassen, das konfiguriert
ist, um durch Koppeln jeder der ersten Leitungen mit einer Spannungsquelle
angelegt zu werden, wodurch das Hochpegel-Spannungssignal oder das
Niedrigpegel-Spannungssignal gezeigt bzw. angelegt werden. Das zweite
Signal kann ein zweites passives Signal umfassen, das durch widerstandsmäßiges Koppeln jeder
der zweiten Leitungen mit einer Spannungsquelle, die zu derjenigen,
die mit den ersten Leitungen gekoppelt ist, entgegengesetzt ist,
angelegt wird. Umgekehrt, kann das erste Signal auch ein erstes passives
Signal sein, das konfiguriert ist, um durch widerstandsmäßiges Koppeln
jeder der ersten Leitungen mit einer das Hochpegel- Spannungssignal oder
das Niedrigpegel-Spannungssignal zeigenden Spannungsquelle angelegt
zu werden und das zweite Signal ein aktives zweites Signal sein,
das durch Koppeln jeder der zweiten Leitungen mit einer Spannungsquelle,
die zu derjenigen die mit den ersten Leitungen gekoppelt ist, entgegengesetzt
ist, angelegt wird.
-
Das
Abfragesignal kann bei Ausführungsbeispielen
einen Pegel umfassen, der derselbe wie das zweite Signal ist. Bei
einem Ausführungsbeispiel
ist das Abfragesignal ein passives Signal, wenn das zweite Signal
ein aktives Signal ist. Alternativ kann das Abfragesignal auch ein
aktives Signal sein, wenn das zweite Signal ein passives Signal
ist.
-
Die
Vorrichtung kann auch eingerichtet sein, um ein aktives erstes Signals
an die ersten Leitungen anzulegen und ein aktives zweites Signals
an die zweiten Leitungen anzulegen. Dabei kann das Abfragesignal
ein Signal umfassen, das einen gleichen Spannungspegel wie ein zweites
Signal aufweist. Hierbei kann ein aktives Abfragesignal angelegt
werden, wenn das erste Signal das erste aktive Signal aufweist oder
ein passives Abfragesignal angelegt werden, wenn das erste Signal
das erste passive Signal aufweist.
-
Die
Vorrichtung kann auch dafür
eingerichtet sein, beim Anlegen des Abfragesignals an die identifizierte
zweite Leitung das erste Signal von den ersten Leitungen zu nehmen.
Die Vorrichtung kann ferner eingerichtet sein, um beim Identifizieren
einer Mehrzahl von zweiten Leitungen, die ein von dem zweiten Signal
verschiedenes Signal zeigen, jede der Mehrzahl von identifizierten
zweiten Leitungen zu verfolgen. Eine Speichereinrichtung kann vorgesehen
sein, um jede der Mehrzahl von identifizierten zweiten Leitungen
zu verfolgen. Die Vorrichtung kann auch dafür vorgesehen sein, um für jede der
Mehrzahl von identifizierten zweiten Leitungen eine nächste identifizierte
zweiten Leitung zu identifizieren, an die das Abfragesignal nicht
angelegt wurde und jede der Mehrzahl von identifizierten zweiten
Leitungen außer
der nächsten
identifizierten zweiten Leitung von einer Quelle des zweiten Signals
elektrisch zu entkoppeln. Hierbei wird das Abfragesignal an die
nächste
identifizierte zweite Leitung angelegt. Die Vorrichtung kann auch
dafür eingerichtet
sein, um die erste Spannung vor dem Anlegen des Abfragesignals an
die nächste
identifizierte zweite Leitung neu an jede der Mehrzahl von ersten
Leitungen anzulegen.
-
Die
Vorrichtung kann ferner einen Tastenmaskierungserfassungsmechanismus
aufweisen, wobei der Tastenmaskierungserfassungsmechanismus eingerichtet
ist, um zu bestimmen, ob mehr als eine der ersten Leitungen ein
Signal zeigen, das einen Kontakt mit der das Abfragesignal anlegenden identifizierten
zweiten Leitung anzeigt, und – wenn mehr
als eine der ersten Leitungen ein Signal zeigen, das einen Kontakt
mit der das Abfolgesignal anlegenden identifizierten zweiten Leitung
anzeigt – zu
bestimmen, ob die Mehrzahl von identifizierten zweiten Leitungen
von der gespeicherten Liste der identifizierten zweiten Leitungen
verschieden ist. Die Mehrzahl erster Leitungen kann eine Mehrzahl
von Zeilenleitungen und die Mehrzahl zweiter Leitungen eine Mehrzahl
von Spaltenleitungen sein. Alternativ kann die Mehrzahl von ersten
Leitungen eine Mehrzahl von Spaltenleitungen und die Mehrzahl von
zweiten Leitungen eine Mehrzahl von Zeilenleitungen sein.
-
Die
Erfindung schafft ferner ein Verfahren mit den Schritten eines Identifizierens
einer ersten Leitung als eine Leitung, die ein erstes Signal zeigt,
das von einem zweiten Signal verschieden ist, das auf mindestens
einer anderen mit der ersten Leitung assoziierten Leitung vorliegt,
eines Anlegens eines Abfragesignals an die identifizierte erste
Leitung und eines Identifizierens mindestens einer zweiten Leitung, die
ein Signal zeigt, das anzeigt, daß sich die mindestens eine
zweite Leitung in Kontakt mit der ersten Leitung befindet, an die
das Abfragesignal angelegt ist, wobei mindestens eine einer Mehrzahl
von Tasten als die Taste identifizierbar ist, die die Kopplung der
identifizierten zweiten Leitung und der mindestens einen identifizierten
ersten Leitung verursacht.
-
Die
Erfindung schafft auch ein Computerprogrammprodukt mit auf einem
maschinenlesbaren Träger
gespeicherten Programmcode zur Durchführung des obigen Verfahrens,
wenn das Computerprogrammprodukt auf einem Rechner abläuft.
-
Weitere
Ausführungsbeispiele
der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf
die beiliegenden Zeichnungen näher
erläutert.
Es zeigen:
-
1 ein
Blockdiagramm eines für
eine Implementierung der Tastaturabfrage ausgelegten Tastatursystems.
-
2–9 Blockdiagramme
eines Tastatursystems, die den Betrieb einer Implementierung einer
Tastaturabfrage abbilden.
-
10–15 Blockdiagramme
eines Tastatursystems, die den Betrieb einer Implementierung einer
für das
Identifizieren von Schlüsselmaskierungssituationen
ausgelegten Tastaturabfrage abbilden.
-
16 ein
Flußdiagramm
einer Implementierung einer Tastaturabfrage.
-
17 ein
Blockdiagramm eines Vielzweck-Datenverarbeitungssystems, das betreibbar ist,
um eine Implementierung einer Tastaturabfrage zu unterstützen und
zu nutzen.
-
In
den Zeichnungen beziehen sich die erste Stelle in dreistelligen
Bezugszahlen und die ersten zwei Stellen in vierstelligen Bezugszahlen
auf die Figur, in denen das betreffende Element zuerst erscheint.
-
Verschiedene
Ausführungsformen
der vorliegenden Offenbarung werden ausführlicher mit Bezug auf die
Zeichnungen beschrieben, in denen gleiche Bezugszeichen in allen
der mehreren Ansichten gleiche Teile und Baugruppen bezeichnen.
-
Kurz
gefaßt,
betrifft die vorliegende Offenbarung Verfahren, computerlesbare
Speichermedien und Vorrichtungen zum Abtasten bzw. Abfragen (Scannen)
einer Tastatur (Keyboards). Die Betätigung jeder der Tasten koppelt
elektrisch eine von mehreren ersten Leitungen und eine von mehreren zweiten
Leitungen. An mehrere erste Leitungen wird ein erstes Signal angelegt.
An mehrere zweite Leitungen wird ein zweites Signal angelegt. Bei
Identifizierung mindestens einer der zweiten Leitungen als eine Leitung,
die ein von dem zweiten Signal verschiedenes Signal zeigt, wird
ein Abtastsignal bzw. Abfragesignal (Scannsignal) an die identifizierte
zweite Leitung angelegt. Mindestens eine erste Leitung wird als eine
Leitung identifiziert, die ein Signal zeigt, das anzeigt, daß sich mindestens
eine erste Leitung in Kontakt mit der identifizierten zweiten Leitung
befindet, die das Abfragesignal anlegt. Es wird mindestens eine
der Tasten als eine Taste identifiziert, die die Kopplung der identifizierten
zweiten Leitung und der mindestens einen identifizierten ersten
Leitung verursacht.
-
In
der Abfragesequenz wird ein Kurzschluß kurzer Dauer verwendet, um
Signalübersprechen
zu löschen.
Dann wird das zweite Signal erneut an die zweiten Signalleitungen
angelegt und für
jede der zweiten Signalleitungen ein erfasster Signalwert bestimmt.
Jede der zweiten Signalleitungen, für die ein erfasster Wert von
dem zweiten Signal verschieden ist, wird als eine Leitung identifiziert,
in der mindestens eine Taste betätigt
ist, und die identifizierten zweiten Leitungen werden für eine individuelle
Abfrage designiert.
-
Tastaturabfragesystem zur Implementierung
einer Tastaturabfrage
-
1 ist
ein Blockdiagramm eines Tastatursystems 100, das dafür ausgelegt
ist, eine Implementierung des Tastaturabfragens zu verwenden. Das Tastatursystem 100 enthält eine
Tastatur 110, die zum Beispiel eine Tastatur des Folienkontakttyps
wie zuvor beschrieben enthalten kann, die in vielen elektronischen
Geräten
benutzt wird. Die Tastatur 110 enthält mehrere Tasten 115,
mehrere erste Leitungen 120, die in Spalten gezeigt sind,
und mehrere zweite Leitungen 130, die in Zeilen gezeigt
sind. Wie zuvor beschrieben, führt
die Betätigung
einer der Tasten 115 dazu, daß eine elektrischer Kontakt
zwischen einer jeweiligen ersten Leitung 120 und einer
jeweiligen zweiten Leitung 130, die sich an dieser Taste schneiden,
hergestellt wird.
-
Die
ersten Leitungen 120 sind mit einer Menge erster Leitungstreiber 140 gekoppelt.
Die ersten Leitungstreiber 140 können als eine einzige Treiberschaltung
implementiert sein, oder wie in 1 gezeigt
als mehrere individuelle erste Leitungstreiber 142–150.
Auf die gleiche Weise sind die zweiten Leitungen 130 mit
einer Menge zweiter Leitungstreiber 160 gekoppelt. Die
zweiten Leitungstreiber 160 können ebenso als eine einzige
Treiberschaltung oder als mehrere individuelle zweite Leitungstreiber 162–174 implementiert
sein. Als weitere Alternative können
die ersten Leitungstreiber 140 und die zweiten Leitungstreiber 160 als
eine einzige Treiberschaltung oder als Teil eines integrierten Steuersystems implementiert
werden. Ungeachtet der Art und Weise der Implementierung der Leitungstreiber 140 und 160 werden
die Leitungstreiber 140 und 160 beide dazu verwendet,
Signalwerte an die Leitungen 120 und 130 anzulegen
und Signalwerte aus ihnen zu lesen, um zu bestimmen, welche Taste
oder Tasten 115 betätigt
wurden.
-
Ein
Steuersystem 180 dient zur Steuerung des Betriebs der Leitungstreiber 140 und 160 sowie des
Lesens der Daten aus den Leitungstreibern 140 und 160.
Das Steuersystem 180 ist unter Verwendung von Mehrbit-Steuerleitungen
oder -steuerbussen 185 mit den Leitungstreibern 140 und 160 gekoppelt.
Das Steuersystem 180 bestimmt, welche Signale an jede der
Leitungen 114 und 116 der Tastatur 110 angelegt
werden, und liest, welche Signale an jeder der Leitungen 120 und 130 empfangen
werden.
-
Das
Steuersystem 180 kann als eine anwendungsspezifische integrierte
Schaltung (ASIC), als ein Mikroprozessor oder Mikrocomputer, der
programmierte Anweisungen ausführt,
oder unter Verwendung anderer Arten von Steuerschaltkreisen implementiert
werden. Zusätzlich
können
die Leitungstreiber 140 und 160 und die Steuerleitungen 185 mit dem
Steuersystem 180 integriert werden, um eine einzige Anordnung
zu bilden, die betreibbar ist, um die Leitungen 120 und 130 zum
Abfragen der Tastatur 110 zu betätigen.
-
Bei
einer Implementierung umfaßt
das Steuersystem 180 einen Speicher 190 zum Speichern
von aus den Leitungstreibern 140 und 160 gelesenen
Signalwerten. Wie mit Bezug auf 2–15 ausführlicher
beschrieben werden wird, kann der Speicher 190 dazu verwendet
werden, Daten zu speichern, die angeben, wenn eine der Mengen von
Leitungen 120 und 130 ein Signal empfangt, wodurch angezeigt
wird, daß eine
oder mehrere der mit den Leitungen 120 und 130 assoziierten
Tasten 115 betätigt
wurden. Wie mit Bezug auf 10-15 beschrieben,
kann der Speicher 190 beim Erfassen von Tastenmaskierungssituationen
verwendet werden. Der Speicher 190 könnte wie in 1 gezeigt
in dem Steuersystem 180, als separate Vorrichtung oder
als Teil der Leitungstreiber 140 und 160 vorgesehen sein.
-
Die
in 1 gezeigten Vorrichtungen sind mit einer (nicht
gezeigten) Leistungsquelle bzw. Strom/Spannungsquelle gekoppelt.
Die Leistungsquelle ist dafür
konfiguriert, eine Spannungsquelle mit hohem Pegel und eine Spannungsquelle
mit niedrigem Pegel zur Bereitstellung des Betriebsstroms für die Vorrichtungen
bereitzustellen. Die Spannungsquelle mit hohem Pegel und die Spannungsquelle
mit niedrigem Pegel stellen außerdem
eine Quelle für
an die Leitungen 120 und 130 beim Abfragen der
Tastatur 110 anzulegende Signale bereit, wie es später beschrieben
werden wird. Außerdem
wird das Steuersystem 180 mit einer (in 1 nicht
gezeigten) Vorrichtung gekoppelt sein, die Eingaben von der Tastatur 110 empfangt.
Alternativ können
das Steuersystem 180 und andere Vorrichtungen, wie etwa
die Leitungstreiber 140 und 160, mit denen das
Steuersystem 180 kommuniziert, in ein Rechensystem bzw. Datenverarbeitungssystem
oder ein anderes elektronisches Gerät integriert werden, mit dem
die Tastatur 110 assoziiert wird. Anders ausgedrückt, sind
Implementierungen der Tastaturabfrage nicht auf eine oder mehrere
spezifische Hardwareimplementierungen beschränkt. Statt dessen kann die
Tastaturabfrage durch ein beliebiges System implementiert werden, das
betreibbar ist, um die nachfolgend beschriebenen Maßnahmen
auszuführen.
-
Betriebsbeispiel für eine Tastaturabfrage
-
2–15 sind
Blockdiagramme eines Tastatursystems, die den Betrieb einer Implementierung
einer Tastaturabfrage abbilden. Das Keyboardsystem 200 enthält mehrere
Tasten 202, die in einer Matrix von Zeilen und Spalten
angeordnet sind. Jede der Tasten 202 befindet sich in einer
bestimmten Zeile und in einer bestimmten Spalte. Zu diesem Zweck ist
jeder der Tasten 202 mit einer zweistelligen Kennzeichnung
etikettiert, um darzustellen, in welcher Zeile und in welcher Spalte
sie angeordnet ist. Zum Beispiel befindet sich Taste 4-5 204 in
der vierten Zeile und fünften
Spalte der Tastatur 200. Entsprechend befindet sich die
Taste 3-1 206 204 in der dritten Zeile und ersten
Spalte der Tastatur 200, während sich die Taste 2-4 208 in
der zweiten Zeile und vierten Spalte der Tastatur 200 befindet.
-
Jede
der Spaltenleitungen 210–218 (Spalten) und
jede der Zeilenleitungen 250–258 ist mit einem
von mehreren Spaltentreibern 220–228 bzw. Zeilentreibern 260–268 assoziiert, wobei
jeder der Treiber 220–228 und 260–268 ebenso
wie zuvor beschrieben in kombinierten Schaltkreisen implementiert
werden könnte.
Jeder der Spaltentreiber 220–228 und Zeilentreiber 260–268 umfaßt einen Ausgangsabschnitt
(Ausgabeabschnitt) 230–238 und 270–278 und
einen Eingangsabschnitt (Eingabeabschnitt) 240–248 und 280–288.
Jeder der Ausgangsabschnitte 230–238 und 270–278 steuert,
welches Quellensignal an die Leitung angelegt wird, mit der er gekoppelt
ist. Das angelegte Quellensignal kann ein Signal mit aktivem Hochpegel
oder ein Signal mit aktivem Niedrigpegel umfassen, die durch Koppeln
der jeweiligen Leitungen mit einer Spannungsquelle eines hohen bzw.
niedrigen Pegels erzeugt werden. Als Alternative kann das angelegte
Quellensignal ein passives Hochpegelsignal umfassen, das durch Koppeln
der jeweiligen Leitung mit einem Hochpegelsignal über einen
(in den Figuren nicht gezeigten) „Pullup-Widerstand" erzeugt wird, oder
ein passives Niedrigpegelsignal, das durch Koppeln der jeweiligen Leitung
mit einem Niedrigpegelsignal über
einen (in den Figuren ebenso nicht gezeigten) „Pulldown-Widerstand" erzeugt wird. Die
Eingangsabschnitte 240–248 und 280–288 dienen
zum Lesen eines auf einer Leitung vorliegenden Signals, wie später weiter beschrieben
werden wird.
-
Bei
Implementierungen der Tastaturabfrage können die Ausgangsabschnitte 270–278 und
die Eingangsabschnitte 280–288 der Zeilentreiber 260–268 beide
gleichzeitig benutzt werden oder auch nicht, und die Ausgangsabschnitte 230–238 und
die Eingangsabschnitte 270–278 der Spaltentreiber 220–228 können beide
gleichzeitig benutzt werden oder auch nicht. Genauer gesagt können wie
in dem obigen Beispiel beschrieben die Ausgangsabschnitte 230–238 der
Spaltentreiber 220–228 verwendet
werden, um ein Signal mit aktivem Hochpegel an jede der Spaltenleitungen 210–218 anzulegen,
um ein Quellensignal an die Spaltenleitungen 210–218 anzulegen.
Um zu bestimmen, ob irgendeine der Tasten 202 betätigt worden
ist, legen die Ausgangsabschnitte 270–278 der Zeilentreiber 260–268 ein
passives Niedrigpegelsignal an jede der Zeilenleitungen 250–258 an,
wie zum Beispiel durch Koppeln der Zeilenleitungen 250–258 mit
einem Niedrigpegelsignal mit einem Pulldown-Widerstand. Gleichzeitig überwachen
die Eingangsabschnitte 280–288 der Zeilentreiber 260–268 auf
den Zeilenleitungen 250–258 erfasste Signale,
um zu erfassen, ob eine Taste betätigt wurde.
-
Um
ein spezifisches Beispiel zu nehmen, wird angenommen, daß eine Betätigung der
Taste 4-5 204 bevorsteht. Der Ausgang 238 der
Spalte 5 des Treibers 228 der Spalte 5 legt ein aktives
Hochpegelsignal an die Spaltenleitung 5 218 an. Gleichzeitig legt
der Ausgang 276 der Zeile 4 des Treibers 286 der
Zeile 4 ein passives Niedrigpegelsignal an die Zeilenleitung 4 256
an. Wenn die Taste 4-5 204 betätigt wird (was durch die die
Taste 4-5 204 einkreisende gestrichelte Linie angegeben
wird), wird die Spaltenleitung 5 218 elektrisch mit der Zeilenleitung 4 256 gekoppelt.
Das an die Spaltenleitung 5 218 angelegte aktive Hochpegelsignal
wird dann an die Zeilenleitung 4 256 angelegt, wodurch der Spannungspegel
auf der Zeilenleitung 4 256 angehoben wird. Der Eingang 286 der
Zeile 4 erfasst die Spannungsänderung.
Somit können
die Ausgangsabschnitte 230–238 und 270–278 und
die Eingangsabschnitte 240–248 und 280–288 für mindestens
einen Teil der Mengen von Leitungen 210–218 und 250–258 gleichzeitig
benutzt werden.
-
Das
Tastatursystem 200 enthält
außerdem mindestens
eine Speichervorrichtung, die in diesem Beispiel eine Zeilenspeichervorrichtung 290 ist,
die Zeilenregister 292–299 enthält. Wenn
auf der Zeilenleitung 4 256 eine Spannungspegeländerung
erfasst wird, wird wie weiter unten mit Bezug auf 5 erläutert dieser
Umstand gespeichert, um anzuzeigen, daß die Zeilenleitung 4 256 abgefragt
werden sollte. Um diese Informationen zu speichern, kann in dem Register 298 der
Zeile 4 ein Statusbit auf ein Signal mit hohem Pegel oder eine binäre 1 gesetzt werden. Bei
einer Implementierung ist der in jedem der Zeilenregister 292–299 gespeicherte
Wert anfänglich
eine binäre
0, und die Werte werden in eine binäre 1 umgeändert, wenn eine Tastenbetätigung auf
der jeweiligen Zeilenleitung erfasst wird. Als Alternative könnte eine
binäre
1 als der Anfangswert verwendet werden und mit einer binären 0 signalisiert
werden, daß eine
Taste in einer Zeilenleitung betätigt
worden ist. Wie später
mit Bezug auf 10-15 erläutert werden
wird, kann der Zeilenspeicher 290 auch bei der Bestimmung
verwendet werden, wann eine Tastenmaskierungssituation vorliegt,
die ein unbestimmtes Abtastergebnis erzeugen und/oder vorschreiben kann,
daß eine
neue Abfrage angemessen ist.
-
2–9 zeigen
ein spezifisches Beispiel, bei dem zwei Tasten gleichzeitig betätigt werden.
Implementierungen der Tastaturabfrage sind funktional, um die Betätigung einer
einzigen Taste zu identifizieren. Das Beispiel der Betätigung zweier Tasten
zeigt jedoch Vorteile von Implementierungen der hier offenbarten
Tastaturabfrage auf. Implementierungen der Tastaturabfrage identifizieren
genau die Tasten, die betätigt
werden, verringern den Stromverbrauch, überwinden die Auswirkungen
von Signalübersprechen
und vermeiden in dem Tastatursystem entstehende unkontrollierte
Kurzschlüsse.
-
3 zeigt
eine Anfangsphase eines Tastatursystems 300, bevor irgendwelche
der Tasten 302 betätigt
wurden. In diesem Beispiel werden die Spaltenleitungen 310–318 verwendet,
um Signale zu senden, während
die Zeilenleitungen 350–358 verwendet werden,
um Signale zu empfangen, um zu bestimmen, wann eine oder mehrere
der Tasten 302 betätigt
wurden. In dem Tastatursystem 300 liegen zum Beispiel die
Ausgangsabschnitte 330–338 der
Spaltentreiber 320–328 ein
Hochpegelsignal an die Spaltenleitungen 310–318 an.
Die Eingangsabschnitte 340–348 müssen während dieser
Anfangsphase nicht verwendet werden, weil der Spannungspegel auf
den Spaltenleitungen 310–318 bekannt ist.
Dessen ungeachtet lesen sie jedoch wie in 3 gezeigt unter
Verwendung der Eingangsabschnitte 340–348 ein Hochpegelsignal
auf den Spaltenleitungen 310–318 entsprechend
den durch die Ausgangsabschnitte 330–338 angelegten Hochpegelsignalen.
-
In
den Zeilentreibern 360–368 werden
die Ausgangsabschnitte 370–378 dafür eingerichtet,
ein passives Niedrigpegelsignal an die Zeilenleitungen 350–358 anzulegen.
Durch Anlegen eines passiven Niedrigpegelsignals an die Zeilenleitungen 350–358, während ein
aktives Hochpegelsignal an die Spaltenleitungen 310–318 angelegt
wird, wird dem aus der Betätigung
einer oder mehrerer der Tasten 302 resultierenden Kurzschluß teilweise
widerstanden. Der Pulldown-Widerstand zwischen der an die Zeilenleitungen 350–358 angelegten
Niedrigpegelquelle behindert den Stromfluß aus der Hochpegelsignalquelle zu
der Niedrigpegelsignalquelle, was im Vergleich zu einem durch Koppeln
zweier aktiver, aber entgegengesetzter Signale verursachten Kurzschluß zu einem verringertem
Leistungsverbrauch führt.
Die Eingangsabschnitte 380–388 der Zeilentreiber 360–368 lesen,
daß jede
der Zeilenleitungen 350–358 ein Niedrigpegelsignal
zeigt, wodurch widergegeben wird, daß passive Niedrigpegelsignale
durch die Ausgangsabschnitte 370–378 der Zeilentreiber 360–368 an
jede der Zeilenleitungen 350–358 angelegt sind.
-
4 zeigt
ein Tastatursystem 400 in einer Situation, die in dem Moment
entsteht, in dem zwei der Tasten 402, darunter die Taste
3-1 406 und die Taste 2-4 408, betätigt wurden.
Die Betätigung
der Tasten 3-1 406 und 2-4 408 wird durch den
gestrichelten Kreis angegeben, der die Tasten 404 und 408 umkreist.
Wenn mehrere Tasten betätigt
werden, können
herkömmliche
Systeme Schwierigkeiten bekommen, genau zu identifizieren, welche
Tasten betätigt
wurden, und das Betätigen
mehrerer Tasten kann als Folge der Kurzschlüsse zu einer merklichen Stromentnahme
führen.
-
In
dem in 4 gezeigten Tastatursystem 400 legen
die Ausgangsabschnitte 430–438 der Spaltentreiber 420–428 weiter
ein aktives Hochpegelsignal an die Spaltenleitungen 410–318 an.
Das Betätigen
der Taste 2-4 408 und der Taste 3-1 406 bewirkt,
daß die
von der Spaltenleitung 1 410 und der Spaltenleitung 4 416 geführten aktiven
Hochpegelsignale elektrisch an die Zeilenleitung 3 454 bzw.
die Zeilenleitung 2 452 angelegt werden. Als Folge erfassen
Eingang 482 der Zeile 2 des Treibers 462 der Zeile
2 und Eingang 484 der Zeile 3 des Treibers 464 der
Zeile 3 nun Spannungspegel, die von den durch Ausgang 472 der
Zeile 2 des Treibers 462 der Zeile 2 und Ausgang 474 der
Zeile 3 des Treibers 466 des Zeile 3 angelegten Pegeln
verschieden sind. Der Eingang 480 der Zeile 1, der Eingang 486 der
Zeile 4 und der Eingang 488 der Zeile 5 lesen dagegen weiter dieselben
Signale, die durch Ausgang 470 der Zeile 1, Ausgang 476 der
Zeile 4 bzw. Ausgang 478 der Zeile 5 angelegt werden. Bei
einer Implementierung leitet das Lesen verschiedener Signale auf
den Zeilenleitungen 450–458 oder eine Änderung
des auf beliebigen der Zeilenleitungen 450–458 gelesenen Signals
die Tastaturabfrage ein. Die Signale, die auf den Zeilenleitungen 450–458 in
dem Moment nach dem Betätigen
einer oder mehrerer Tasten gelesen werden, können jedoch nicht genau anzeigen,
auf welcher der Zeilenleitungen 450–458 Tasten betätigt wurden.
-
Die
Signale, die auf den anderen Zeilenleitungen durch Eingang 480 der
Zeile 1 des Treibers 460 der Zeile 1, Eingang 486 der
Zeile 4 des Treibers 466 der Zeile 4 und Eingang 488 der
Zeile 5 des Treibers 468 der Zeile 5 erfasst werden, würden sich
im Idealfall nicht indem, weil in diesen Zeilen keine Tasten betätigt wurden.
Teilweise aufgrund des relativ langsamen Ansprechens, das sich aus
der Verwendung von Pulldown-Widerständen auf den Zeilenleitungen 450–458 ergibt,
kann sich jedoch ein Signalübersprechen
zwischen den Zeilenleitungen 450–458 aufgrund der
Betätigung
der Taste 2-4 408 und der Taste 3-1 406 ergeben.
Die auf der Zeilenleitung 2 452 und der Zeilenleitung 3 454,
die durch einen Pulldown-Widerstand durch Ausgang 472 der
Zeile 2 bzw. Ausgang 474 der Zeile 3 mit einem Niedrigpegelsignal
gekoppelt werden, stattfindenden Signaländerungen können dazu führen, daß Eingang 480 der Zeile
1, Eingang 486 der Zeile 4 und Eingang 488 der Zeile
5 ein unbestimmtes Signal zeigen. Es wäre nicht wünschenswert, in dem Zeilenspeicher 490 die Signalwerte
aufzuzeichnen, die von den Zeileneingängen 480–488 gelesen
werden, die mit jeder der Zeilenleitungen 450–458 assoziiert
sind. Eingang 482 der Zeile 2 und Eingang 484 der
Zeile 3 würden genau
ein Hochpegelsignal lesen, das anzeigt, daß eine Taste betätigt wurde,
und es würden
genaue Signale in dem Register 494 der Zeile 2 und dem
Register 496 der Zeile 3 aufgezeichnet. Wie in 4 gezeigt,
würden
das Register 492 der Zeile 1, das Register 498 der
Zeile 4 und das Register 499 der Zeile 5 jedoch Ergebnisse
speichern, die unbestimmt oder ungenau wären.
-
Mit
der Zeit würden
sich die auf den Zeilenleitungen 450–458 durch die Zeileneingänge 480–488 gelesenen
Signale stabilisieren, wobei Eingang 482 der Zeile 2 und
Eingang 484 der Zeile 3 jeweils ein Hochpegelsignal lesen,
während
Eingang 480 der Zeile 1, Eingang 486 der Zeile
4 und Eingang 488 der Zeile 5 ein Niedrigpegelsignal lesen
würden. Nachdem
eine ausreichende Zeit vergangen ist, würde das Signalübersprechen
durch die mit den Zeilenleitungen 450–458 gekoppelten Pulldown-Widerstände entladen.
Da jedoch Leistung durch die Tastaturabfrage verbraucht und zwischen
der Hochpegelquelle und der Niedrigpegelquelle entnommen wird und
weil eine schnelle Tastaturabfrage gewünscht ist, ist es nicht wünschenswert,
darauf zu warten, bis sich die Signale auf den Zeilenleitungen 450–458 stabilisieren.
Es könnte
Millisekunden oder länger
dauern, bis sich das Signalübersprechen
löscht.
Wenn das Signalübersprechen
schnell entladen werden könnte, könnte jedoch
eine gesamte Tastaturabfrage in geringerer Zeit abgeschlossen werden,
verglichen mit der Zeit, die es dauern würde, bis sich das Signalübersprechen
entlädt.
-
5 zeigt
ein Tastatursystem 500, das als Reaktion auf die Betätigung der
Taste 3-1 506 und der Taste 2-4 508 (eine Implementierung
der Tastaturabfrage) einen kurzen Kurzschluß erzeugt, um potentielles
Signalübersprechen
zwischen den Spaltenleitungen 510–518 und den Zeilenleitungen 550–558 schnell
zu löschen.
Bei einer Implementierung wird Signalübersprechen gelöscht, indem
entgegengesetzte aktive Signale an die Zeilenleitungen und Spaltenleitungen
angelegt werden, um etwaige Sekundärspannungen zu entladen, die
sich aus einem Übersprechen
zwischen den Signalleitungen ergeben. Die Beseitigung des Signalübersprechens
stellt sicher, daß das
Tastatursystem 500 die Betätigung irgendwelcher der Tasten 502 nicht
falsch signalisiert.
-
Bei
einer in 5 gezeigten Implementierung
wird Signalübersprechen
gelöscht,
indem durch die Ausgangsabschnitte 570–578 der Zeilentreiber 560–568 ein
aktives Niedrigpegelsignal an die Zeilenleitungen 550–558 angelegt
wird, während
das durch die Ausgangsabschnitte 530–538 der Spaltentreiber 520–528 an
die Spaltenleitungen 510–518 angelegte aktive
Hochpegelsignal aufrechterhalten wird. Das Anlegen entgegengesetzter
aktiver Signale auf den Spaltenleitungen 510–518 und
den Zeilenleitungen 550–558 erzeugt einen
Kurzschluß zwischen der
Spaltenleitung 4 516 und der Zeilenleitung 2 552 als Folge
der Betätigung
der Taste 2-4 508 und einen weiteren Kurzschluß zwischen
der Spaltenleitung 1 510 und der Zeilenleitung 3 554 als
Folge der Betätigung
der Taste 3-1 506. Der durch Anlegen des aktiven Niedrigpegelsignals
an die Ausgangsabschnitte 570–578 der Zeilentreiber 560–568 erzeugte
Kurzschluß entlädt jegliches
Signalübersprechen.
Die Ausgangsabschnitte 570–578 der Zeilentreiber 560–568 brauchen
das aktive Niedrigpegelsignal nur für eine sehr kurze Zeitspanne
an die Zeilenleitungen 550–558 anzulegen, wodurch
verhindert wird, daß der
Kurzschluß unnötigerweise
Strom verbraucht.
-
Abhängig von
den verwendeten Vorrichtungen kann zum Beispiel eine Zeitspanne
in der Größenordnung
von 50 bis 200 Nanosekunden eine geeignete Dauer für das Anlegen
des Kurzschlusses sein. Solche Zeitdauern reichen aus, um das Signalübersprechen
zu löschen
und somit Signale zu beseitigen, die falsch die Betätigung einer
Taste anzeigen könnten,
und sind dabei kurz genug, um keine merkliche Leistung zu verbrauchen.
Solche Dauern sind darüber
hinaus ohne weiteres unter Verwendung verschiedener Hardwareimplementierungen
praktisch implementierbar.
-
Bei
einer Implementierung wird das Anlegen des Kurzschlusses zum Löschen des
Signalübersprechens
durch eine Steuerungsanweisung erreicht, die bewirkt, daß aktive
Hochpegel- und aktive Niedrigpegelsignale an die jeweiligen Leitungen
angelegt werden. Zu diesem Zweck kann eine C-Codeanweisung auf Microcontrollern
verwendet werden, die die C-Codeanweisung
oder eine ähnliche
Anweisung zum Schreiben eines Signalwert auf die Leitung erkennen
können.
Eine nächste
Anweisung wird verwendet, um den Kurzschluß aufzulösen. Bei einer Implementierung
wird der Kurzschluß somit
für die
Zeitspanne zwischen zwei Steuerungsanweisungen angelegt. Wenn zum
Beispiel insbesondere die Microcontroller mit einer Kernfrequenz
von 10 MHz arbeitet und eine Anweisung fünf Taktzyklen verwendet, würde die
Dauer des Kurzschlusses 50 Nanosekunden dauern. Wenn die Core-Frequenz
kleiner als 10 MHz ist und/oder die Anweisung mehr Zyklen zum Abschluß benötigt, kann
die Dauer länger
als 50 MHz dauern. Um das Signalübersprechen
zu löschen, kann
kurzgefaßt
die Dauer des Kurzschlusses kurz sein, wobei die Dauer, für die der
Kurzschluß angelegt
wird, aber letztendlich von der verwendeten Hardwareimplementierung
abhängt.
-
Die
aus dem Anlegen des Kurzschlusses zum Löschen des Signalübersprechens resultierende
Stromentnahme kann auch mit der Dauer des Kurzschlußintervalls,
der Anzahl der betätigten
Tasten und dem durch die verwendeten Treiberschaltkreise angelegten
Strom variieren. Bei einer Implementierung beträgt der Strombedarf zum Löschen des
Signalübersprechens,
wenn eine Signaltaste betätigt
wird, nur 50 Mikroampere. Für
jede zusätzliche Taste,
die gedrückt
wird, führt
dies zu zusätzlichen Kurzschlüssen zwischen
anderen Leitungen, und der Strombedarf nimmt zu. Angesichts der
relativ kurzen Kurzschlußdauer,
für die
der Strom aufgewandt werden wird, sind jedoch Entnahmen in der Größenordnung
von einigen zehn oder sogar Hunderten Mikroampere mehr als tolerierbar
oder sogar vernachlässigbar.
Auf jeden Fall wird die genaue Stromentnahme mit der Kurzschlußdauer und
anderen Implementierungsdetails variieren. Dessen ungeachtet beseitigen
Implementierungen der vorliegenden Offenbarung Signalübersprechen
mit akzeptabel kleinen Werten der Stromentnahme.
-
Wie
in 5 gezeigt, löscht
der Kurzschluß das
Signalübersprechen.
Die Zeilenausgänge 570–578 der
Zeilentreiber 560–568 koppeln
die Zeilenleitungen 550–558 direkt mit einer
Niedrigpegel-Signalquelle. Folglich zeigen die Zeilenleitung 1 550,
die Zeilenleitung 4 556 und die Zeilenleitung 5 558 ein
Niedrigpegelsignal, weil diese Zeilenleitungen nicht durch Tasten
mit irgendwelchen das Hochpegelsignal zeigenden Spaltenleitungen
gekoppelt werden. Das Signalübersprechen
wird schnell entladen und gelöscht.
Eingang 580 der Zeile 1, Eingang 586 der Zeile
4 und Eingang 588 der Zeile 5 werden somit ein (als eine „0" dargestelltes) Niedrigpegelsignal
lesen. Da die Zeilenleitung 2 552 und die Zeilenleitung
3 554 ein durch die Spaltenleitung 1 510 und die
Spaltenleitung 4 516 gezeigtes Hochpegelsignal durch die
Betätigung
der Taste 3-1 506 bzw. der Taste 2-4 508 auf ein
durch Ausgang 572 der Zeile 2 und Ausgang 574 der
Zeile 3 gezeigtes Niedrigpegelsignal kurzschließen, lesen Eingang 582 der Zeile
2 und Eingang 584 der Zeile 3 nun ein unbestimmtes Signal.
(Eingang 540 der Spalte 1 des Treibers 520 der Spalte
1 und Eingang 546 der Spalte 4 des Treibers 526 der
Spalte 4 würden
als Folge des Kurzschlusses auch unbestimmte Signalwerte lesen.)
Obwohl das Signalübersprechen
gelöscht
wird, sollten jedoch die aktuellen Signalpegel nicht in dem Zeilenspeicher 590 aufgezeichnet
werden. Obwohl in dem Register 592 der Zeile 1, dem Register 598 der
Zeile 4 und dem Register 599 der Zeile 5 genaue Niedrigpegelsignalwerte
aufgezeichnet werden könnten,
wären die Werte
für das
Register 594 der Zeile 2 und das Register 596 der
Zeile 3 unbestimmt.
-
6 zeigt
ein Tastatursystem 600, bei dem, nachdem das Übersprechen
wie mit Bezug auf 5 beschrieben gelöscht wird,
die Zeilenausgänge 670–678 der
Zeilentreiber 660–668 auf
ihre passive Niedrigpegel- oder Pulldown-Pegel wiederhergestellt werden.
Eingang 680 der Zeile 1, Eingang 686 der Zeile
4 und Eingang 688 der Zeile 5 werden weiter genau ein Niedrigpegelsignal
lesen. Diese Werte werden dann in das Register 692 der
Zeile 1, das Register 698 der Zeile 4 und das Register 699 der
Zeile 5 der Zeilenspeicher 690 geschrieben. Eingang 672 der
Zeile 2 und Eingang 674 der Zeile 3 werden jedoch nun beide
genau ein Hochpegelsignal lesen, das durch Ausgang 630 der
Spalte 1 des Treibers 620 und Ausgang 636 der
Spalte 4 des Treibers 646 der Spalte 4 durch Betätigung der
Taste 3-1 606 bzw. der Taste 2-4 608 angelegt
wird.
-
Die
Spaltenausgänge 630–638 der
Spaltentreiber 620–628 legen
weiter ein Hochpegelsignal an die Spaltenleitungen 610–618 an.
Eingang 642 der Spalte 2, Eingang 644 der Spalte
3 und Eingang 648 der Spalte 5 lesen weiter Hochpegelsignale
auf der Spaltenleitung 2 612, der Spaltenleitung 3 614 bzw. der
Spaltenleitung 5 618. Nachdem der mit Bezug auf 5 beschriebene
Kurzschluß entfernt
wurde, stabilisiert sich das Signal auf der Spaltenleitung 1 610 und
der Spaltenleitung 4 616. Eingang 640 der Spalte 1
und Eingang 646 der Spalte 4 lesen somit das von Ausgang 630 der
Spalte 1 bzw. Ausgang 636 der Spalte 4 gezeigte Hochpegelsignal.
Bei einer Implementierung ändern
sich die durch die Spaltenausgangsabschnitte 630–638 angelegten
Signale während
dieses Vorgangs nicht, so daß kein
Strom beim Schalten der Spaltenausgangsabschnitte 630–638 verloren
wird.
-
Nachdem
sich die Signalpegel stabilisiert haben, können nun genaue Zeilenpegelsignale
in dem Zeilenspeicher 690 aufgezeichnet werden. Das Register 692 der
Zeile 1, das Register 698 der Zeile 4 und das Register 699 der
Zeile 5 speichern Niedrigpegelsignale, um anzuzeigen, daß keine
in diesen Zeilen betätigten
Tasten erfasst wurden. Register 694 der Zeile 2 und Register 696 der
Zeile 3 speichern jedoch Hochpegelsignale, um anzuzeigen, daß in diesen
Zeilen betätigte
Tasten erfasst wurden. Wie nachfolgend erläutert wird, werden die Zeilen,
in denen eine Tastenbetätigung
erfasst und in dem Zeilenspeicher 690 aufgezeichnet wurde,
individuell abgefragt, um zu bestimmen, in welcher Spalte oder in welchen
Spalten eine oder mehrere Tasten betätigt worden sind. Da für die übrigen Zeilen
keine Signaländerung
aufgezeichnet wurde, müssen
diese Zeilen nicht abgefragt werden, wodurch Zeit und Strom gespart
wird.
-
7 zeigt
ein Tastatursystem 700, bei dem eine der eine Tastenbetätigung registrierenden
Zeilen individuell abgefragt wird, um zu identifizieren, in welcher
Spalte eine Taste oder Tasten 702 betätigt wurden. Wieder umfassen
die abzufragenden Zeilenleitungen die Zeilenleitung 2 752 und
die Zeilenleitung 3 754, auf denen Tastenbetätigungen
erfasst und in dem Zeilenregister 2 794 bzw. dem Zeilenregister
3 796 der Zeilenspeicher 790 protokolliert wurden.
Bei der Abfrage der Zeilenleitung 2 752, wird Ausgang 772 der
Zeile 2 auf ein aktives Niedrigpegelsignal gesetzt. Für jegliche
anderen Zeilenleitungen, für
die der Zeilenspeicher 790 zeigt, daß eine Taste betätigt wurde,
die in diesem Fall die Zeilenleitung 3 754 ist, werden
diese Zeilenleitungen von einer Signalquelle entkoppelt, was durch
ein Lesen als „AUS" durch Ausgang 774 der
Zeile 3 angezeigt wird. Indem bewirkt wird, daß die Zeilenleitung 3 754 von
einer Signalquelle entkoppelt wird, wird vermieden, daß die Abfrage
der Zeilenleitung 2 752 fälschlicherweise anzeigt, daß eine Taste
in einer Spalte in der Zeilenleitung 2 752 betätigt wurde, wenn tatsächlich eine
Taste möglicherweise
in dieser Spalte in einer anderen Zeile betätigt wurde. Anders ausgedrückt, wird
die Zeilenleitung 3 754 entkoppelt, um sicherzustellen, daß die Abfrage
der Zeilenleitung 2 752 nicht anzeigt, daß eine Taste
in einer Zeilenleitung 2 752 an der Spaltenleitung 1 710 betätigt wurde,
wenn es die Betätigung
der Taste 3-1 708 in der Zeilenleitung 3 754 war,
die in dem später
beschriebenen Verfahren bewirkt, daß ein Signal in der Spaltenleitung
1 710 gelesen wird. Das Isolieren anderer Zeilenleitungen,
in denen Tastenbetätigungen
erfasst wurden, während individuell
jede der Zeilenleitungen, in denen Tastenbetätigungen erfasst wurden, abgefragt
wird vermeidet eine fälschliche
Identifikation, daß in
anderen Zeilenleitungen betätigte
Tasten in der Zeilenleitung betätigt
wurden, die gerade abgefragt wird.
-
Eingang 784 der
Zeile 3 liest weiter ein Hochpegelsignal. Die Zeilenleitung 3 754 wird
weiter durch die Taste 3-1 706 mit der Spaltenleitung 1 710 gekoppelt,
und die Spaltenleitung 1710 führt ein durch Ausgang 730 der
Spalte 1 angelegtes Hochpegelsignal. Zeilenleitungen, auf denen
keine Tastenbetätigung erfasst
wurde, werden in ihre anfänglichen
Pulldown-Zustände
zurückgeführt, was
dadurch angezeigt wird, daß Ausgang 770 der
Zeile 1 des Treibers 760 der Zeile 1, Ausgang 776 der
Zeile 4 des Treibers 766 der Zeile 4 und Ausgang 778 der
Zeile 5 des Treibers 768 der Zeile 5 alle als "PULL-DOWN" lesen.
-
Während der
individuellen Abfrage von Zeilenleitungen, in denen zuvor eine Tastenbetätigung erfasst
wurde, werden die Ausgangsabschnitte 730–738 der
Spaltentreiber 720–728 von
einer Signalquelle entkoppelt. Da zuvor ein Hochpegelsignal an die
Spaltenleitungen 710–718 angelegt
wurde, werden sich das Signal in den Spaltenleitungen 710–714 und 718,
die nicht durch die Betätigung
einer Taste gekoppelt werden oder mit einer entkoppelten Zeilenleitung
gekoppelt sind, wie etwa der Zeilenleitung 3 754, nicht ändern. Eingang 740 der
Spalte 1, Eingang 742 der Spalte 2, Eingang 744 der
Spalte 3 und Eingang 748 der Spalte 5 werden somit immer noch
ein Hochpegelsignal zeigen.
-
Da
Ausgang 772 der Zeile 2 jedoch durch die betätigte Taste
2-4 708 ein aktives Niedrigpegelsignal an die Spaltenleitung
4 716 anlegt, wird Eingang 746 der Spalte 4 ein
Niedrigpegelsignal auf der Spaltenleitung 4 716 lesen.
Da das andere Signal an die Zeilenleitung 2 752 angelegt
wurde und auf der Spaltenleitung 4 716 erfasst wurde, kann
bestimmt werden, daß die
Taste 2-4 708 betätigt
wurde. Welche Taste oder Tasten betätigt wurden, wird zusammengefaßt bestimmt,
indem an eine Zeilenleitung, auf der zuvor eine Tastenbetätigung erfasst
wurde, ein anderes Signal angelegt wird und die Spaltenleitungen
abgefragt werden, um zu bestimmen, auf welcher dieser nun ein anderes
Signal erfasst wird.
-
Obwohl
es in dem Beispiel der Zeichnungen nicht gezeigt ist, sollte man
beachten, daß die
hier offenbarte Tastaturabfrage identifizieren würde, wenn Tasten in mehr als
einer Spalte in jeder Zeile betätigt werden.
Hypothetisch würde,
falls die Taste 2-5 704, die sich in der Zeilenleitung
2 752 und der Spaltenleitung 5 718 befindet, auch
betätigt
wäre, Eingang 748 der
Spalte 5 auch ein Niedrigpegelsignal lesen, wie der gelesene Eingang 746 der
Spalte 4 wie in 7 gezeigt. Die Tastaturabfrage
wird somit identifizieren, wenn mehrere Tasten in jeder Zeile betätigt wurden, wobei
jedoch Tastenmaskierungsbedingungen gelten, wie mit Bezug auf 10–15 beschrieben.
-
Falls
eine Tastenbetätigung
nur in einer einzigen Zeile erfasst würde, wäre die Tastaturabfrage nun
abgeschlossen. Das Tastatursystem würde dann in einen Anfangszustand
zurückgesetzt,
wie es durch das Tastatursystem 200 oder FIGUR 2 abgebildet ist. Die
Betätigung
einer Taste würde
dann ein Interrupt erzeugen, das den Tastaturabfrageprozeß erneut
initialisieren würde.
Wenn der Zeilenspeicher 790 (oder jegliche andere Vorrichtung
oder jeglicher andere Prozeß,
die verwendet wird, um zu verfolgen, in welchen Zeilenleitungen
eine Tastenbetätigung
erfasst wurde) zeigt, daß eine
Tastenbetätigung
in einer anderen Zeilenleitung erfasst wurde, wird die Tastaturabfrage
fortgesetzt, bis jede der Zeilenleitungen abgefragt ist.
-
8 zeigt
das Tastatursystem 800, das zwischen den Abfragen jeder
Zeilenleitung, auf der zuvor eine Tastenbetätigung erfasst wurde, zurückgesetzt
wird. Die Spaltenausgangsabschnitte 830–838 der Spaltentreiber 820–828 legen
ein aktives Hochpegelsignal an die Spaltenleitungen 810–818 an,
um das Hochpegelsignal auf jeder der Spaltenleitungen 810–818 für die nächste Zeilenleitungsabfrage
aufzufrischen. Die Spalteneingangsabschnitte 840–848 werden
somit alle vor der Abfrage der nächsten
Zeilenleitung, in der eine Tastenbetätigung erfasst wurde, ein Hochpegelsignal
lesen.
-
Die
letzte abgefragte Zeile (in diesem Fall die Zeilenleitung 2 852)
wird durch Ausgang 872 der Zeile 2 des Treibers 862 der
Zeile 2 von einer Signalquelle entkoppelt. Zeilenleitungen, auf
denen eine Tastenbetätigung
erfasst wurde, die aber gerade nicht abgefragt werden, werden wie
zuvor beschrieben entkoppelt, um zu vermeiden, dass Tasten gelesen
werden, die in Spalten anderer Zeilen betätigt wurden. Eingang 882 der
Zeile 2 zeigt an, daß die Entkopplung
der Zeilenleitung 2 852 dazu führt, daß die Zeilenleitung 2 852 als
Ergebnis ihrer Verbindung mit dem Hochpegelsignal, das durch die
Betätigung der
Taste 2-4 808 durch Ausgang 836 der Spalte 4 an die
Spaltenleitung 4 816 angelegt wird, ein Hochpegelsignal
zeigt.
-
Die
Zeilenleitungen, auf denen zuvor keine Tastenbetätigung erfasst wurden, darunter
die Zeilenleitung 1 850, die Zeilenleitung 4 856 und
die Zeilenleitung 5 858, bleiben auf ein passives Niedrigpegelsignal
heruntergezogen, um die Erzeugung von Störsignalen durch Ausgang 870 der
Zeile 1 des ersten Zeilentreibers 860, Ausgang 876 der
Zeile 4 des Treibers 856 der Zeile 4 und den Ausgang der
Zeile 5 des Treibers 858 der Zeile 5 zu vermeiden. Dies wird
durch die Niedrigpegelsignale dargestellt, die durch Eingang 880 der
Zeile 1, Eingang 886 der Zeile 4 und Eingang 868 der
Zeile 5 gelesen werden.
-
Die
Abfrage der Zeilenleitung 3 854 steht bevor, wie zuvor
mit Bezug auf 9 beschrieben. Zwischen Zeilenleitungsabfragen
besteht keine Notwendigkeit, die Zeilenleitung 3 854 herunterzuziehen. Dies
würde lediglich
unnötigerweise
Strom verbrauchen, indem eine Taste betätigt wird, die ein aktives Hochpegelsignal
aus einer Spaltenleitung mit einer Niedrigpegelquelle koppelt, wenn
auch nur durch einen Pulldown-Widerstand. Die Zeilenleitung 3 854 bleibt
also entkoppelt, was durch Ausgang 874 der Zeile 3 des
Treibers 864 der Zeile 3 wiedergegeben wird, der weiter
als „AUS" gelesen wird. Da
die Zeilenleitung 3 854 durch die Betätigung der Taste 3-1 808 mit
der Spaltenleitung 1 810 gekoppelt wird, liest Eingang 884 der
Zeile 3 ein Hochpegelsignal, das durch Ausgang 840 der
Spalte 1 an die Spaltenleitung 1 810 angelegt wird.
-
Da
nun die Zeilenleitung 2 872 abgefragt worden ist, kann
nun zusätzlich,
obwohl es in 8 nicht gezeigt ist, in dem
Zeilenspeicher 890 das Register 894 der Zeile
2 auf eine binäre
0 oder ein anderes Signal zurückgesetzt
werden, um anzuzeigen, daß die
Zeilenleitung 2 852 bereits abgefragt wurde. Das Register 894 der
Zeile 2 braucht jedoch erst dann zurückgesetzt werden, wenn alle
Zeilenleitungen abgefragt worden sind, solange eine bestimmte Technik
zum Vermeiden einer Abfrage einer Zeilenleitung, die bereits abgefragt
wurde, verwendet wird.
-
9 zeigt
das Tastatursystem 900 als für die Abfrage der nächsten Zeilenleitung,
der Zeilenleitung 3 954, auf der zuvor eine Tastenbetätigung erfasst
wurde, eingerichtet. Die Betätigung
einer Taste in der Zeilenleitung 3 954 wurde zuvor in dem
Register 996 der Zeile 3 des Zeilenspeichers 990 gespeichert.
Wie zuvor mit Bezug auf 7 beschrieben wurde, wird jeder
der Spaltenausgänge 930–938 der Spaltentreiber 940–948 wieder
entkoppelt, um so an die Spaltenleitungen 910–818 kein
Signal anzulegen. Nach dem mit Bezug auf 8 beschriebenen
Rücksetzen
werden die Spaltenleitungen 910–918 jedoch ein Rest-Hochpegelsignal zeigen,
wenn sie nicht durch eine Verbindung mit einer der Zeilenleitungen entladen
werden. Die Zeilenleitung 1 950, die Zeilenleitung 4 956 und
die Zeilenleitung 958 bleiben heruntergezogen, um ein passives
Niedrigpegelsignal zu zeigen. Die Zeilenleitung 2 952 bleibt
entkoppelt. Ausgang 974 der Zeile 3 des Treibers 964 der
Zeile 3 legt nun jedoch ein aktives Niedrigpegelsignal an die Zeilenleitung
3 954 an, was dadurch wiedergegeben wird, daß Eingang 984 der
Zeile 3 ein Niedrigpegelsignal liest.
-
Da
Ausgang 974 der Zeile 3 durch die betätigte Taste 3-1 906 ein
aktives Niedrigpegelsignal an die Spaltenleitung 1 910 anlegt,
wird Eingang 940 der Spalte 1 ein Niedrigpegelsignal auf
der Spaltenleitung 1 910 lesen. Da an die Zeilenleitung
3 952 ein Signal, das sich von dem Signal anderer Zeilenleitungen
unterscheidet, angelegt wurde und es auf der Spaltenleitung 1 910 erfasst
wurde, kann bestimmt werden, daß die
Taste 3-1 906 betätigt
wurde.
-
Der
Vorgang der Abfrage jeder der individuellen Zeilenleitungen wird
für so
viele Zeilenleitungen, wie zuvor eine Tastenbetätigung erfasst wurde, wiederholt,
wobei dies bei einer Implementierung durch die Zeilenspeicher 990 verfolgt
wird. Sobald die Zeilenleitung 2 952 und die Zeilenleitung
3 954 abtastet sind und bestimmt wurde, in welchen Spalten
Tasten in jeder dieser Zeilen getätigt wurden, kann in dem obigen
Beispiel bestimmt werden, welche Tasten betätigt wurden. Die Taste oder
Tasten, die betätigt
wurden, werden dem System unter Verwendung der Tastatur gemeldet.
Das Tastatursystem wird zurückgesetzt,
um auf die Erfassung einer nächsten
Tastenbetätigung
zu warten.
-
In
dem obigen Beispiel sind es die Zeilenleitungen, die auf Tastenbetätigungen überwacht
und dann abgefragt werden, um zu identifizieren, welche Tasten betätigt wurden.
Man sollte jedoch beachten, daß eine
Tastaturabfrage anstelle der Zeilenleitungen die Spalten überwachen
und individuell abfragen könnte.
Weiterhin könnte
die beschriebene Tastaturabfrage mit Tastatursystemen benutzt werden,
bei denen die Tasten nicht in einer herkömmlichen Matrix von Zeilen
und Spalten ausgerichtet sind. Statt dessen könnte das Tastatursystem eine
andere Form von Tastatur enthalten, einschließlich sich überlappender Mengen von Signalleitungen.
Außerdem
sollte beachtet werden, daß die
zum Überwachen
oder Abfragen der Leitungen verwendeten Signalpegel umgekehrt werden
könnten,
wobei anstelle von Niedrigpegelsignalen Hochpegelsignale verwendet
werden und umgekehrt. Die hier offenbarte Tastaturabfrage identifiziert
Differenzen in Signalen, die durch die Betätigung von Tasten verursacht
werden, anstatt bestimmte Signalpegel zu identifizieren, ob diese
Signalpegel hoch oder niedrig sind.
-
Implementierungen
der Tastaturabfrage haben mehrere Vorteile. Erstens gibt es bei
Verwendung der Tastaturabfrage keine unkontrollierten Kurzschlüsse zwischen
irgendwelchen Leitungen, wodurch eine Verschwendung von Leistung
vermieden wird. Außerdem
kann die Tastaturabfrage sehr schnell ausgeführt werden, weil nur Leitungen,
auf denen Tastenbetätigungen
erfasst werden, abgefragt werden, statt die gesamte Tastatur abzutasten.
Außerdem
verwendet die Tastaturabfrage wenige Signaländerungen. Die Spaltenausgangsabschnitte
halten kontinuierlich einen hohen Spannungspegel, und die Zeilenausgangsabschnitte
müssen
erst aktiviert werden, wenn eine Abfrage startet. Aufgrund des niedrigen
Stromverbrauchs kann die Tastaturabfrage für drahtlose Tastaturanwendungen,
zum Beispiel unter Verwendung von Bluetooth-Technologie, implementiert
werden. Erfassen einer Tastenmaskierung während einer Tastaturabfrage
-
Implementierungen
der Tastaturabfrage sind betreibbar, um zu erfassen, wenn die Betätigung bestimmter
Tasten maskiert ist, was zu einem ungenauen Ergebnis führen könnte. 10 zeigt
ein Tastatursystem 1000, das demjenigen Tastatursystem 400 von 4 entspricht,
mit der Ausnahme, daß zusätzlich zu
der Betätigung
der Taste 3-1 1006 und der Taste 2-4 1008 auf
der Tastatur 1002 auch die Taste 3-4 1002 betätigt ist.
Da die Taste 3-4 1002 in derselben Zeile wie die Taste
3-1 1006 liegt, ist Eingang 1084 der Zeile 3 des
Treibers 1064 der Zeile 3 derselbe wie wenn nur die Taste
3-4 1002 betätigt
wird, weil die Betätigung
der Taste 3-1 1006 bereits zu einer Verbindung zwischen
der Spaltenleitung 3 1016 und der Zeilenleitung 3 1054 geführt hat.
-
11 zeigt
ein Tastatursystem 1100, bei dem ein Signalübersprechen
gelöscht
wird, wie es zuvor mit Bezug auf 5 beschrieben
wurde. 11 ist mit 5 identisch,
mit der Ausnahme, daß die
Taste 3-4 1002 betätigt
ist. Die Taste 3-4 1102 befindet sich jedoch in der Zeilenleitung
3 1154 und in der Spaltenleitung 3 1116, die beide
bereits als Folge der Betätigung
der Taste 3-1 1106 und der Taste 2-4 1108 kurzgeschlossen
wurden, und die Betätigung
der Taste 3-4 1102 hat keine oder minimale Auswirkung auf
die Signalübersprechen-Kurzschließung.
-
12 zeigt
ein Tastatursystem 1200, das das Lesen der betätigten Tasten
darstellt, nachdem das Signalübersprechen
gelöscht
ist, wie es mit Bezug auf 11 beschrieben
wurde. 12 ist mit 6 identisch,
mit der Ausnahme, daß die
Taste 3-4 1202 betätigt
ist. Als Folge der zum Löschen
des Signalübersprechens
verwendeten begrenzten beabsichtigten Kurzschlüsse und des Betätigens der
Taste 2-4 1208 und der Taste 3-1 1206 lesen Eingang 1282 der
Zeile 2 des Treibers 1262 der Zeile 2 bzw. Eingang 1284 der
Zeile 3 des Treibers 1264 der Zeile 3 beide ein durch eine „1" dargestelltes Hochpegelsignal.
In der Zeilenleitung 1 1250, der Zeilenleitung 4 1256,
und der Zeilenleitung 5 1258 wurden keine Tasten betätigt und
somit lesen keine der Zeileneingängen 1280, 1286 und 1288 der
anderen Zeilentreiber 1260, 1266 bzw. 1268 ein
Hochpegelsignal.
-
Die
Betätigung
der Taste 3-4 1202 ändert nichts
an dem, was von jeder der Zeileneingänge der Zeilentreiber im Vergleich
zu der in 6 dargestellten Situation gelesen
wird: Taste 3-4 1202 befindet sich in derselben Zeile wie
Taste 3-1 1206, und die Betätigung der Taste 3-1 1206 hat
bereits dazu geführt,
daß Eingang 1284 der
Zeile 3 ein Hochpegelsignal liest. Die Betätigung der Taste 3-4 1202 wird
in dieser Phase der Tastaturabfrage somit maskiert. Wie es in der
Situation von 6 der Fall war, wird in dem
Zeilenspeicher 1290 ein Hochpegelwert in dem Speicherregister 1294 der
Zeile 2 und dem Speicherregister 1296 der Zeile 3 gespeichert,
während
in den anderen Zeilenregistern 1292, 1298 und 1299 Niedrigpegelwerte
gespeichert werden.
-
Wie
in 13 gezeigt ändert
jedoch die Betätigung
der Taste 3-4 1302 die Auswirkung der nachfolgenden Abfrage
der Zeilenleitung 2 1352. Das Tastatursystem 1300 von 13 zeigt
eine ähnliche
Situation wie 7, bei der ein Abfragesignal
an die Zeilenleitung 2 1352 angelegt wird. In dem Beispiel von 13 ändert jedoch
die Betätigung
der Taste 3-4 1302 in der Zeilenleitung 1352 das,
was auf anderen Zeilenleitungen und Spaltenleitungen gelesen wird.
Das an die Zeilenleitung 2 1352 angelegte Niedrigpegel-Abfragesignal wird
durch die Betätigung
der Taste 2-4 1308 mit der Spaltenleitung 4 1316 gekoppelt,
was wieder dazu führt,
daß Eingang 1346 der Spalte
4 des Treibers 1326 der Spalte 1 eine Niedrigpegeleingabe
liest. Wie in 13 gezeigt, wird jedoch auch
das an die Spaltenleitung 4 1316 angekoppelte Niedrigpegel-Abfragesignal
durch die Betätigung
der Taste 3-4 1302 mit der Zeilenleitung 3 1354 gekoppelt.
Als Ergebnis liest Eingang 1384 der Zeile 3 des Treibers 1364 der
Zeile 3 nun das Niedrigpegel-Abfragesignal. Außerdem koppelt die Betätigung der
Taste 3-1 1306 das Niedrigpegel-Abfragesignal mit der Spaltenleitung
1 1310, wodurch bewirkt wird, daß Eingang 1340 der
Spalte 1 des Treibers 1320 der Spalte 1 das Niedrigpegel-Abfragesignal liest.
-
Wie
zuvor beschrieben verwenden Implementierungen der Tastaturabfrage
die einzelnen Zeilenleitungsabfragen, um zu identifizieren, in welcher Spalte
oder Spalten Tasten in jeder Zeilenleitung betätigt wurden. Wenn zum Beispiel
bei der in 7 abgebildeten Zeilenleitungsabfrage
die Zeilenleitung 2 752 abgefragt wurde und das Abfragesignal
auf der Spaltenleitung 4 716 erfasst wurde, wurde bestimmt, daß die Taste
2-4 708 betätigt
worden ist. In 13 führt die auf Zeile 2 1382 angewandte
Zeilenabfrage jedoch dazu, daß sowohl
Eingang 1346 der Spalte 4 des Treibers 1326 der
Spalte 4 als auch Eingang 1340 der Spalte 1 des Treibers 1320 der
Spalte 1 das Niedrigpegel-Abfragesignal lesen. Als Ergebnis würde beim
Versuch, aus der Kombination welcher Spalten das Abfragesignal zeigen,
wenn Zeilenleitung 2 1352 abgefragt wird, zu identifizieren,
welche Tasten betätigt
wurden, fälschlicherweise
bestimmt werden, daß zusätzlich zu
Taste 2-4 1308 die Taste 2-1 1302 betätigt wurde.
-
Die
Maskierungssituation kann durch Ausführen einer Tastenmaskierungsprüfung identifiziert werden.
Bei einer Implementierung wertet diese Prüfung zwei Tastenmaskierungsbedingungen
aus. Erstens wird für
jede Zeilenleitungsabfrage bestimmt, ob mehr als eine Spaltenleitung
während
der Abfrage einer einzigen Zeilenleitung das Abfragesignal erfasst. Wenn
dies nicht der Fall ist, erfasst die Zeilenleitungsabfrage keine
Tastenmaskierung und die Tastaturabfrage wird mit der nächsten Zeilenleitungsabfrage
fortgesetzt. Wie in der in 13 gezeigten
Situation, in der die Abfrage der Zeilenleitung 2 1352 dazu führt, daß Tastenbetätigungen
sowohl in der Spaltenleitung 1 1310 als auch in der Spaltenleitung
4 1316 erfasst werden, wäre diese erste Bedingung jedoch erfüllt.
-
Wenn
zweitens eine Tastenbetätigung
während
einer Zeilenleitungsabfrage in mehr als einer Spalte erfasst wird,
wird der Zeileneingang für
jede der anderen Zeilenleitungen geprüft, um zu bestimmen, ob der
neue Zeileneingang von den zuvor bestimmten Eingängen verschieden ist. In 13 speichert
das Register 1396 der Zeile 3 der Zeilenspeicher 1390 ein
Hochpegelsignal, das wie mit Bezug auf 6 beschrieben
in die Zeilenspeicher 1390 geschrieben wurde. Als Folge
der Tastenmaskierungssituation liest Eingang 1384 der Zeile
3 nun jedoch ein Niedrigpegelsignal. Da die in Eingang 1384 der Zeile
3 und in dem Register 1396 der Zeile 3 gespeicherten Werte
nicht übereinstimmen,
ist das Ergebnis der Abfrage unbestimmt. Bei einer Implementierung
der Tastaturabfrage würde
dem System, das die Tastaturabfrage verwendet, ein Fehler gemeldet,
wobei eine neue Benutzereingabe ersucht wird und eine neue Tastaturabfrage
eingeleitet wird.
-
Bei
Verwendung von Implementierungen der Tastaturabfrage wird eine solche
problematische Maskierungsbedingung lediglich von begrenzten Situationen
verursacht. Genauer gesagt ergibt sich eine solche Maskierungsbedingung
nur, wenn mindestens zwei Tasten in derselben Zeile betätigt werden
und wenn sich eine dieser Tasten in einer Spalte befindet, in der
eine andere Taste betätigt
worden ist, so wie es in 10–13 der
Fall ist. Anders ausgedrückt,
hat sich die Tastenmaskierungssituation von 10–13 ergeben,
weil sich die Taste 3-4 in derselben Spalte wie die Taste 2-4 und
in derselben Zeile wie die Taste 3-1 befand.
-
14 zeigt
ein Tastatursystem 1400, das dem Tastatursystem 700 von 7 ähnlich ist,
mit der Ausnahme, daß in
der Situation von 14 eine zusätzliche Taste in einer selben
Spalte aber in einer anderen Zeile als andere Tasten, die betätigt wurden, betätigt wird.
Wenn sich diese Taste jedoch in einer anderen Zeile als eine oder
mehrere Tasten, die betätigt
wurden, befindet, ergibt sich keine Tastenmaskierungssituation.
-
In 14 wird
die Taste 4-4 1402 zusammen mit der Taste 2-4 1408 und
der Taste 3-1 1406 betätigt.
Als Ergebnis der Betätigung
der Taste 4-4 1402 speichert das Register 1498 der
Zeile 4 in der Zeilenspeicher 1490 ein Hochpegelsignal,
wodurch angezeigt wird, daß eine
Taste in der Zeilenleitung 1456 betätigt wurde. Wenn das Abfragesignal
an die Zeilenleitung 2 1452 angelegt wird, werden Ausgang 1474 der
Zeile 3 des Treibers 1464 der Zeile 3 und Ausgang 1476 der
Zeile 4 des Treibers 1466 der Zeile 4 von ihren jeweiligen
Zeilenleitungen entkoppelt. Wenn das Abfragesignal an die Zeilenleitung
2 1452 angelegt wird, bewirkt die Betätigung der Taste 4-4 1402,
daß das
Abfragesignal mit der Zeilenleitung 4 1456 gekoppelt und
durch Eingang 1486 der Zeile 3 des Zeilentreibers 1466 gelesen
wird.
-
Da
jedoch keine der anderen Tasten in der Zeilenleitung 4 1456 betätigt wurden,
wird das Abfragesignal mit keinen anderen Spaltenleitungen gekoppelt,
so daß keine
falschen Eingaben auf irgendwelchen der Spalteneingänge gelesen
werden. Anders ausgedrückt,
da nur eine Spaltenleitung ein Abfragesignal erfasst, entsteht die
erste Tastenmaskierungsbedingung des in zwei Spaltenleitungen für die Abfrage
einer einzigen Zeilenleitung gelesenen Abfragesignals nicht. Obwohl
die zweite Maskierungsbedingung erfüllt würde, weil Eingang 1486 der
Zeile 4 ein anderes Signal lesen würde als das in dem Register 1498 der
Zeile 4 bewertete Signal, weil die erste Bedingung nicht erfüllt ist,
würde somit
die zweite Bedingung nicht geprüft.
-
15 zeigt
ein Tastatursystem 1500, das dem Tastatursystem 900 von 9 entspricht,
mit der Ausnahme, daß in
der Situation von 15 eine zusätzliche Taste in derselben
Zeilenleitung, aber in einer anderen Spalte als andere Tasten, die
betätigt wurden,
betätigt
wird. Wenn sich die betätigte
Taste jedoch in einer Spalte von einer oder mehreren Tasten in derselben
Zeilenleitung, die betätigt
wurden, befindet, entsteht keine Tastenmaskierungssituation.
-
In 15 wird
die Taste 3-3 1502 zusammen mit der Taste 2-4 1508 und
der Taste 3-1 1506 betätigt.
Als Folge der Betätigung
der Taste 3-3 1502 wird, wenn die Zeilenleitung 3 1554 abgefragt
wird, das an die Leitung 3 1554 durch den Ausgang der Zeile
3 des Treibers der Zeile 3 angelegte Abfragesignal an Leitung 1510 der
Spalte 1 und Leitung 1514 der Spalte 3 angelegt. Eingang 1544 der
Spalte 3 in dem Treiber 1524 der Spalte 3 und Eingang 1540 der
Spalte 1 des Treibers 1520 der Spalte 1 lesen beide das
an die Zeilenleitung 3 1554 angelegte Abfragesignal. Da die
Abfrage der Zeilenleitung 3 1554 bewirkt, daß das Abfragesignal
in zwei Spalten erfasst wird, ist die erste Tastenmaskierungsbedingung
erfüllt.
-
Die
Betätigung
der Taste 3-3 1502 führt
jedoch nicht zu einer Kreuzkopplung des Abfragesignals auf irgendwelche
anderen Zeilenleitungen, weil keine anderen Tasten auf der Spaltenleitung
3 1514 betätigt
wurden. Anders ausgedrückt ändert die
Betätigung
der Taste 3-3 1502 keine der Zeileneingangswerte von dem
in der Zeilenspeicher 1590 Gespeicherten. Die zweite Maskierungsbedingung,
die bestimmt, ob irgendwelche Zeilenleitungen verschiedene Werte
erfassen, wird somit nicht erfüllt
sein. Zusammengefaßt
führen
nur spezifische Kombinationen von Tastenbetätigungen zu einer Tastenmaskierungssituation,
die dazu führt,
daß die
Tastaturabfrage ein unbestimmtes Ergebnis liefert.
-
Verfahren zum Durchführen von Tastaturabfragen
-
16 zeigt
ein Flußdiagramm 1600 einer Implementierung
der Durchführung
einer Tastaturabfrage wie in den in 2–15 dargestellten
obigen Beispielen beschrieben.
-
Das
Flußdiagramm 1600 zeigt
ein Verfahren einer Tastaturabfrage für eine Tastatur mit einem ersten
und einem zweiten Satz Signalleitungen, wobei die Leitung in dem
ersten Satz mit einer Leitung in dem zweiten Satz gekoppelt wird,
wenn eine Taste betätigt
wird. Bei 1602 wird eine erste Spannung an einen ersten
Satz Leitungen angelegt, zum Beispiel genau wie ein Hochpegelsignal
wie mit Bezug auf 3 beschrieben an die Spaltenleitungen
angelegt wurde. Bei 1604 wird eine zweite Spannung an einen zweiten
Satz Leitungen angelegt, zum Beispiel genau wie ein passives Niedrigpegelsignal
wie mit Bezug auf 3 beschrieben an die Zeilenleitungen
angelegt wurde. Bei 1606 wird bestimmt, ob irgendwelche
der zweiten Leitungen ein Signal zeigen, das nicht gleich dem zweiten
Signal ist. Wie mit Bezug auf 4 beschrieben,
kann diese Signaländerung anzeigen,
daß eine
Taste betätigt
wurde. Wenn bei 1606 bestimmt wird, daß keine der zweiten Leitungen ein
Signal registriert, das ungleich dem zweiten Signal ist, das ursprünglich an
die zweiten Leitungen angelegt wurde, wird angenommen, daß keine
Taste betätigt
wurde. Das Flußdiagramm 1600 schreitet dann
zu 1606, um kontinuierlich zu bestimmen, ob eine Signaländerung
anzeigt, daß eine
Taste betätigt wurde.
-
Wenn
jedoch bei 1606 bestimmt wird, daß eine oder mehrere der zweiten
Leitungen ein Signal zeigen, das ungleich dem zweiten Signal ist
(bei 1608), wird ein Signalübersprechen durch Verwendung
eines kurzen kontrollierten Kurzschlusses auf den Leitungen gelöscht, wie
es zuvor beschrieben wurde. Bei 1610 wird identifiziert,
welche der zweiten Leitungen ein von dem zweiten Signal verschiedenes Signal
zeigt. Zum Beispiel wurden mit Bezug auf 6 die Zeilenleitung
2 652 und die Zeilenleitung 3 654 als ein anderes
Signal zeigend identifiziert und wurden somit in der Zeilenspeicher 690 für eine Abfrage
notiert. Diese identifizierten zweiten Leitungen werden individuell
abgefragt, um die ersten Leitungen zu bestimmen, mit denen sie gekoppelt
sind und somit welche Taste oder Tasten betätigt wurden.
-
Bei 1612 wird
ein Abfragesignal individuell an eine nächste identifizierte zweite
Leitung angelegt. Zum Beispiel wurde mit Bezug auf 7 ein
aktives Niedrigpegelsignal als Abfragesignal an die Zeilenleitung
2 752 angelegt, während
die andere identifizierte Zeilenleitung (Zeilenleitung 3 754)
von einer Signalquelle entkoppelt wurde. Bei 1614 werden
eine oder mehrere erste Leitungen, die anzeigen, daß das Abfragesignal
durch die identifizierte zweite Leitung an sie angelegt wird, identifiziert.
Zum Beispiel hat in 7 die Spaltenleitung 4 716 einen
von seinem ursprünglichen
Hochpegelwert verschiedenen Signalwert gezeigt, wodurch angezeigt
wird, daß die
Betätigung
einer Taste bewirkt hat, daß das
durch die identifizierte zweite Zeilenleitung (Zeilenleitung 2 752)
gezeigte Niedrigpegel-Abfragesignal an die Spaltenleitung 4 716 angelegt
wird. Die Spaltenleitung 4 716 wurde somit als eine in
dieser Spalte betätigte
Taste aufweisend erkannt.
-
Bei 1616 wird
bestimmt, ob irgendeine Tastenmaskierung erfasst wird. Wie zuvor
mit Bezug auf 10–15 beschrieben
wurde, kann sich eine Tastenmaskierung ergeben, wenn eine Taste
in einer selben Zeile und einer selben Spalte wie andere Tasten,
die betätigt
wurden, betätigt
wird. Bei einer Implementierung kann wie zuvor beschrieben eine
Tastenmaskierung durch Prüfen
von Bedingungen erfasst werden, darunter, ob Tasten in mehr als
einer Spalte in einer selben Zeile betätigt wurden und ob sich der
Zeileneingangswert relativ zu einem zuvor erfassten Wert ändert. Wenn
bei 1616 eine Tastenmaskierung erfasst wird, schreitet
das Flußdiagramm 1600 zu 1622 voran,
indem dem System, das die Tastaturabfrage verwendet, eine ungültige Abfrage signalisiert
und um eine neue Tastaturabfrage ersucht wird.
-
Bei 1618 wird
durch Kombination der identifizierten zweiten Leitung, die abgefragt
wird, und der ersten identifizierten Leitung(en) bestimmt, welche Taste
oder Tasten gedrückt
oder anderweitig betätigt wurden.
Da zum Beispiel mit Bezug auf 7 die Zeilenleitung 2 752 abgefragt
und die Spalte 716 insofern als aktiv identifiziert wurde,
als sie sich in Kontakt mit dem Abfragesignal befand, wurde identifiziert,
daß die
Taste 2-4 408 betätigt
wurde. Bei 1620 wird bestimmt, ob jede der identifizierten
zweiten Leitungen abgefragt worden ist. Wenn dies nicht der Fall ist,
wird in dem Flußdiagramm 1600 auf 1612 zurückgegangen,
um individuell ein Abfragesignal an die nächste identifizierte zweite
Leitung anzulegen. Wenn dagegen bei 1620 bestimmt wird,
daß jede
der identifizierten zweiten Leitungen abgefragt worden ist, wird
in dem Flußdiagramm 1600 auf 1602 zurückgegangen,
bei dem das Tastatursystem zurückgesetzt
und ein erstes Signal an die ersten Leitungen angelegt wird.
-
Datenverarbeitungssystem zur Unterstützung und Nutzung
einer Tastaturabfrage
-
Eine
Tastaturabfrage kann in Software implementiert werden, die auf einem
stationären
oder mobilen Datenverarbeitungssystem ausgeführt wird, das eine Tastatur
wie etwa die Tastatur 110 (1) benutzt.
Zum Beispiel kann die Tastaturabfrage in computerlesbaren Anweisungen
manifestiert werden, die aus einem Speichermedium gelesen und auf einem
Mikroprozessor oder einer anderen Verarbeitungseinheit ausgeführt werden. 17 zeigt
einen Vielzweckcomputer, der betreibbar ist, um eine solche Softwareimplementierung
zu unterstützen.
-
Allgemein
besteht die Erfindung somit auch in einem Computerprogrammprodukt
mit auf einem maschinenlesbaren Träger gespeicherten Programmcode
zur Durchführung
der Abfrageverfahren, wenn das Computerprogrammprodukt auf einem Rechner
abläuft.
In anderen Worten ausgedrückt, kann
die Erfindung somit als ein Computerprogramm mit einem Programmcode
zur Durchführung
des Verfahrens realisiert werden, wenn das Computerprogrammprodukt
auf einem Computer abläuft.
-
Mit
Bezug auf 17 umfaßt eine beispielhafte Betriebsumgebung 1700 eine
Datenverarbeitungseinrichtung, wie zum Beispiel die Datenverarbeitungseinrichtung 1710.
Bei einer Grundkonfiguration kann die Datenverarbeitungseinrichtung 1710 eine
stationäre
Datenverarbeitungseinrichtung oder eine mobile Datenverarbeitungseiririchtung
umfassen. Die Datenverarbeitungseinrichtung 1710 umfaßt in der
Regel mindestens eine Verarbeitungseinrichtung 1720 und
einen Systemspeicher 1730. Abhängig von der genauen Konfiguration
und Art der Datenverarbeitungseinrichtung kann der Systemspeicher 1730 flüchtig (wie
etwa RAM), nichtflüchtig
(wie etwa ROM, Flash-Speicher und dergleichen) oder eine bestimmte
Kombination von beidem sein. Der Systemspeicher 1730 umfaßt in der
Regel ein Betriebssystem 1732, eine oder mehrere Anwendungen 1734 und
kann Programmdaten 1736 umfassen.
-
Die
Datenverarbeitungseinrichtung 1710 kann auch zusätzliche
Merkmale oder Funktionalität aufweisen.
Zum Beispiel kann die Datenverarbeitungseinrichtung 1710 auch
zusätzliche
Datenspeichereinrichtungen (wechselbar und/oder nicht wechselbar)
umfassen, wie zum Beispiel, magnetische Platten, optische Platten,
Band, wechselbare nichtflüchtige
Speichereinrichtungen usw. Ein solcher zusätzlicher Speicher ist in 17 durch
den wechselbaren Speicher 1740 und den nicht wechselbaren Speicher 1750 dargestellt.
Computerspeichermedien können
flüchtige
und nichtflüchtige,
wechselbare und nicht wechselbare Medien umfassen, die in einer
beliebigen Methode oder Technologie zur Speicherung von Informationen
implementiert werden, wie zum Beispiel computerlesbare Anweisungen,
Datenstrukturen, Programmodule oder andere Daten. Systemspeicher 1730,
wechselbare Speicher 1740 und nicht wechselbare Speicher 1750 sind
alle Beispiele für Computerspeichermedien.
Computerspeichermedien umfassen, aber ohne Einschränkung darauf, RAM,
ROM, EEPROM, Flash-Speicher oder andere Speichertechnologie, CD-ROM,
DVD (Digital Versatile Disks) oder andere optische Speicher, magnetische
Kassetten, Magnetband, magnetische Plattenspeicher oder andere magnetische
Speichereinrichtungen, nichtflüchtige
Speicherkarten oder ein beliebiges anderes Medium, das verwendet
werden kann, um die gewünschten
Informationen zu speichern, und auf die Datenverarbeitungseinrichtung 1710 zugreifen
kann. Alle solchen Computerspeichermedien können Teil der Einrichtung 1710 sein.
Die Datenverarbeitungseinrichtung 1710 kann auch Eingabeeinrichtung(en) 1760 aufweisen,
wie zum Beispiel eine Tastatur, die gemäß einer Ausführungsform
einer hier offenbarten Tastaturabfrage betrieben werden kann, eine
Maus, einen Stift, eine Spracheingabeeinrichtung, eine Berührungseingabeeinrichtung
usw. Es können
auch Ausgabeeinrichtung(en) 1770 wie etwa ein Display,
Lautsprecher, ein Drucker usw. mit eingeschlossen sein.
-
Die
Datenverarbeitungseinrichtung 1710 enthält außerdem Kommunikationsverbindung(en) 1780,
die es der Einrichtung ermöglichen,
mit anderen Datenverarbeitungseinrichtungen 1790 zu kommunizieren,
wie zum Beispiel über
ein Netzwerk oder ein drahtloses Netzwerk. Die Kommunikationsverbindung(en) 1780 ist
ein Beispiel für
Kommunikationsmedien. Kommunikationsmedien realisieren in der Regel
computerlesbare Anweisungen, Datenstrukturen, Programmodule oder
andere Daten in einem modulierten Datensignal wie zum Beispiel einer
Trägerwelle
oder einem anderen Transportmechanismus und umfassen beliebige Informationsablieferungsmedien.
Der Ausdruck "moduliertes
Datensignal" kann
ein Signal umfassen, von dem eine oder mehrere Kenngrößen dergestalt
gesetzt oder geändert
werden, daß Informationen
in dem Signal codiert werden. Als Beispiel, aber nicht als Einschränkung, können Kommunikationsmedien
verdrahtete Medien wie etwa ein verdrahtetes Netzwerk oder eine
direkt verdrahtete Verbindung und drahtlose Medien, wie etwa akustische, HF-,
Infrarot- und andere drahtlose Medien umfassen. Der hier verwendete
Ausdruck computerlesbare Medien umfaßt sowohl Speichermedien als
auch Kommunikationsmedien.