Hardware > Hardware (Classic 16-/32-Bit)

Tastatur mit CapsLock Controlle

<< < (13/27) > >>

Burkhard Mankel:
Warum müssen wir eigentlich den IKBD verwenden? Betrachtet man den Schaltplan, lassen sich die Kontakte der Taste sehr leicht abgreifen, zB am Anodenanschluß von D5 die eine Leitung und am Pin 20 des 6301 die zweite Leitung der CapsLock Taste. Diese könnten dann zB ein Relais oder entsprechende Bauteilegruppe schalten, das beim ersten Tastendruck anzieht und beim nächsten Druck auf dieselbe Taste abfällt. In dem zu steuernden Schaltkreis wird mit entsprchenden Bauteilen - also 220 Ohm Widerstand und LED - eine solche zwischen +5V und Masse ein- oder ausgeschaltet ...

Ich hoffe, ich konnte mich verständlich ausdrücken ...

Zur vorgeschichte: ich kann mich erinnern, mal ein Gerät besessen zu haben, das nur über nichtrastende Tasten verfügte. Die Betätigung einer Taste schaltete eine Funktion ein (bzw. um) und die nächste Betätigung wieder aus ...

Gast120501:
Du hast scheinbar nicht so ganz verstanden, wie so eine Tastaturmatrix funktioniert... Das geht so:

Du hast Leiterbahnen, die die Spalten bilden, und welche, die die Reihen bilden. Auf den Kreuzungspunkten sitzen die Tasten. Die Spalten werden durch einen Ausgang mit soundsoviel Bit breite am Tastaturcontroller angesteuert und sind erstmal in Ruhe alle auf 5V. Die Reihen sind per Pull-Up auch an 5V und an einem soundsoviel Bit breiten Eingang des Tastaturcontrollers angeschlossen.

Der Tastaturcontroller legt nun Bit 0 des Ausgangs auf Low, und liest gleichzeitig den Eingang auf volle Bitbreite ein und wertet das aus. Liest er dort "111111..." wurde keine Taste gedrückt. Dann macht er das Bit 0 wieder auf High, und legt Bit 1 auf low und liest wieder den Eingang vollständig ein, und liest wieder "11111..." weil niemand eine Taste gedrückt hat. So schaltet er nacheinander die einzelnen Ausgangsbits auf 0 und wieder auf 1, und dann das nächste. Wenn er am Eingang dabei ständig nur "111111..." einliest, wurde keine Taste gedrückt. Kommt er am letzten Bit des Ausgangs an, fängt er wieder von vorne an. Das passiert ständig und mehrere Tausend mal pro Sekunde.

Nächste Runde von vorne, eins der Ausgangsbits wird auf 0 geschaltet, und dieses Mal liegt ein Eingangsbit auf 0. Das heißt dieser Ausgang hat Verbindung mit diesem Eingang, eine Taste wurde gedrückt! zum Beispiel:

Ausgang 11111011
Eingang wird gelesen: 11101111

Natürlich geht das auch mit mehreren gleichzeitig gedrückten Tasten, dabei spielt es keine Rolle, ob sie alle auf den selben Reihen/Spalten sitzen, oder nicht, es kann auch sowas erkannt werden:

Ausgang 11101111
Eingang 01111011

Den Ausgangswert und den Eingangswert kann man nun als Zeigeradresse auf eine Zelle in einer Tabelle nehmen, darin steht dann der Scancode der Taste, die an den Rechner versendet wird. Zur Sicherheit wird übrigens der Tastencode nicht schon beim ersten Mal versendet, sondern erst wenn er mehrmals erkannt wurde. Sonst wird die Tastatur zu überempfindlich, sie prellt, und weitere Dinge, die man auf diese Weise verhindert.

Der Tastaturprozessor ist also sehr schnell, schneller als du dir das gerade bei deinem Vorschlag überlegt hast, das heißt, du kannst eine Taste sehr sehr kurz antippen (schnell schreiben...) und dennoch hat der Tastaturprozessor das Drücken der Taste während der Kontakt verbunden ist, schon mehrere hundert male erkannt.

Daher funktioniert deine Idee so wie du sie beschreibst nicht. Als ich diese Idee zum ersten Mal vor einigen Wochen hier schrieb, habe ich erhlich auch nicht daran gedacht. Habe aber inzwischen einen ausgereifteren Vorschlag gemacht, siehe heute gegen 17:00. Denn solch eine Erkennung würde flattern, weil die gedrückte Taste nur 1/ntel eines Umlaufs (also nacheinander alle Bit auf 0) durchschalten würde. Lies nochmal meinen Vorschlag um ca. 17:00, der ist weiter entwickelt und enthält auch kein Relais...

Relais braucht man bei TTL-Pegel nicht, um eine LED anzusteuern. Relais machen nur Sinn, wenn man mit kleinen Spannungen große Spannungen/Ströme schalten will, oder Wechselspannungen, oder analoge Signale (video) die man mit möglichst wenig Aufwand verzerrungsfrei (!) umschalten will.

Aber wahrscheinlich ignorierst du meine Beiträge sowieso und wirst auch diese Erklärung nicht mitbekommen. Naja, mach dein Ding, bau auf was du hier schreibst, und stelle fest, dass es nicht geht. Der eine lernt duch lesen, der andere nur durch Ignorieren und Machen.

ToPeG:
Ich habe in meiner Schaltung ganz vergessen, das der Status wechseln soll.

Dazu muss man wie folgt vorgehen: Wenn Die passende Spalte selektiert ist, dann speichere den Aktuellen Zustand der Zeile. Ändert sich der Zusand dann triggere das Flipflop, weches dann wechselt.

EDIT: fehlerhaftes Schaltbild

Pin 8 muss auch geprüft werden, da Port4 doppelt genutzt wird. Pin8 muss high sein, ansonsten wird Maus oder Joystick abgefragt. Wäre das nicht würde ein 7474 ausreichen.

Edit: Fehler im Schaltplan. Ich hatte die Funktion von /PreLoad Falsch in Erinnerung. Hier die Korrektur:

rainers:
Hallo zusammen,

daß eine reine HW-Lösung durch SW "korrumpiert" werden kann, verstehe ich, damit muß man das eben leben.
Aber mal in die Runde gefragt, denn mir fällt kein sinnvolles Beispiel ein: Welchen Sinn hat es, ausgerechnet Capslock per SW zu schalten?
Für mich ist eine Tastatur zum benutzen da, also benutze ich für Großbuchstaben entweder die SHIFT-Taste oder zum Feststellen Capslock.

Rainer

ToPeG:
Bei der Passworteingabe sollte sicher gestellt werden, das Capslock nicht aktiv ist.

Oder beim Programmstart sollte Capslock deaktiviert sein. Das könnte bei Tastenkombinationen zu unerwarteten Ergebnissen führen.

Capslock kann auch dafür verwendet werden Im Programm den Betriebsmodus zu ändern.

Mir fallen viele Gründe ein Capslock über ein Programm steuerbar zu machen.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln