Björn Weber Spannhagenstr.23 W-3ooo Hannover 5l Ich habe ein Problem mit meiner Tastatur ! Der erste Tastendruck wird ignoriert. Daten zur Tastatur : FRENCH/BELGIAN Version MT 0004466 Wer kann mir helfen ? ============================================================================= "Er gab keine antwort" Randall W a l t e r Wilh.-Leuschner-Str. 6 6078 Neu-Isenburg Tel. 06102 / 21065 (ab 17.00 - 23.00 Uhr) 13. November 1991 Herrn Björn Weber Spannhagenstrasse 23 W-3000 Hannover 51 Lieber Björn, nachdem ich mit Dir am Telefon gesprochen habe, habe ich mich gleich an die Arbeit gemacht. Nachstehend einige Auszüge aus Amiga intern (Data Becker), in denen erklärt wird, wie die Tastatureinheit funktioniert - insbesondere die von mir erwähnte Synchronisation zwischen Tastatur und Amiga. "Die Amiga-Tastatur ist eine sogenannte intelligente Tastatur. Sie besitzt einen eigenen Mikroprozessor, der die zeitaufwendige Abfrage der einzelnen Tasten übernimmt und dem Amiga die fertigen Tasten-Codes liefert. (** Oh, Gott! Das ist doch nicht ein Mini-Sidecar, oder? **) Es gibt inzwischen verschiedene Ausführungen und Belegungen der Amiga-Tastatur, aber sie unterscheiden sich nur durch einige neu hinzugekommene Tasten und damit auch Tasten-Codes. (** Es ist egal ob Du französisch, deutsch oder englisch bist, nur die Ta- staturbelegung ist anders, sprich Fonts, und natürlich wie die Tasten orga- nisiert sind. **) Kern der Tastaturschaltung ist der Mikroprozessor 6500/1. Der 6500/1 ist ein sogenannter Ein-Chip-Mikrocomputer. Er enthält auf einem Chip alle Komponen- ten, die ein einfaches Computersystem zum Arbeiten benötigt. Das Herz des 6500/1 ist ein Mikroprozessor vom Typ 6502 (Aha!). (** Da habe ich Dir am Telefon gesagt, daß er mit dem Commodore C 64 verwandt wäre - nochmals Aha! **) Dazu kommen noch 2 KByte ROM mit dem Steuerprogramm, 64 Bytes statisches RAM, 4 bidirektionale 8-Bit-Ports, ein 16-Bit-Zähler mit eigenem Steuereingang und ein Taktgenerator. Zum Betrieb benötigt der 6500/1 nur noch seine Betriebsspannung von 5 Volt und ein Quarz für die Takterzeugung. In der Amiga-Tastatur wird der 6500/1 mit einem 3-MHz-Quarz betrieben. Da diese Frequenz intern noch durch zwei geteilt wird, beträgt die Taktfrequenz 1.5 MHz. Das zweite Chip auf der Tastaturplatine ist ein sogenannter Präzisionszeit- geber vom Typ 556. Genaugenommen befinden sich zwei dieser Präzisionszeitge- ber in dem Baustein. Der 556 erzeugt zusammen mit den paar Bauteilen um ihn herum das Reset-Signal für den 6500/1. Die Tasten sind in zwei Gruppen auf- geteilt. Die sieben Sonderfunktionstasten (Shift rechts, ALT rechts, Amiga rechts, Control. Amiga links, ALT links und Shift links) sind direkt mit den ersten sieben Portleitungen des PB-Ports verbunden. Alle restlichen Tasten sind in einer Matrix von sechs Zeilen auf 15 Spalten angeordnet. Die Zeilen sind mit Leitungen PA2 bis PA7 von Port A verbunden. Diese sechs Portleitungen sind als Eingänge geschaltet. Die 15 Spalten wer- den von Port C und D angesteuert. Die zu PD7 gehörende 16. Spalte ist in den derzeitigen Tastaturversionen nicht beschaltet. Die Tastatur ist mit dem Amiga über ein vieradriges Spiralkabel verbunden. Zwei der Leitungen dienen dabei lediglich der Stromversorgung der Tastatur- elektronik mit den nötigen 5 Volt. Die gesamte Datenübertragung läuft über die restlichen beiden Leitungen. Dabei dient die eine als Datenleitung KDAT und die andere als Taktleitung KCLK. Innerhalb des Amiga ist KDAT mit dem seriellen Eingang SP und KCLK mit dem CNT-Pin von CIA-A verbunden. Die Datenübertragung ist unidirektional. Sie läuft immer von der Tastatur zum Amiga. (** D.h. ich kann nur ein Programm schreiben, das die Tasten-Codes und die von der Tastatur kommenden Fehlercodes empfängt bzw. auswertet ! . **) Der 6500/1 legt dazu die einzelnen Daten-Bits auf die Datenlei- tung (KDAT), begleitet von 20 Mikrosekunden langen Low-Impulsen der Clock- Leitung (KCLK). Zwischen den einzelnen Clock-Impulsen liegen jeweils 40 Mikrosekunden lange Pausen. Das bedeutet, die Übertragungszeit für jedes Bit beträgt 60 Mikrosekunden (20 + 40). Dies ergibt bei 8 Bit 480 Mikro- sekunden pro Byte oder umgerechnet eine Übertragungsgeschwindigkeit von 16666 Baud (Bits/Sekunde). (** Wie bei einem Modem oder Akustikkoppler-Verbindung **) Nach der Ausgabe des letzten Bits erwartet die Tastatur einen Handshake- Impuls vom Computer. Der Amiga legt zu diesem Zweck die KDAT-Leitung für mindestens 75 Mikrosekunden auf Low. Allerdings werden die Daten nicht in der üblichen Reihenfolge 7-6-5-4-3-2-1-0 gesendet, sondern vorher noch um eine Bit-Position nach links rotiert: 6-5-4-3-2-1-0-7. Z.B. wird aus dem Tasten-Code für "J" mit gesetztem achten Bit = 10100110 nach dem Rotieren 01001101. Das KEYup/down-Flag wird dadurch immer zuletzt übermittelt. Zusätzlich ist die Datenleitung noch Low-aktiv. D.h. eine 0 wird durch ein High und eine 1 durch ein Low dargestellt. Das Schieberegister im CIA des Amiga übernimmt mit jedem Clock-Impuls das aktuelle Bit an der SP-Leitung. Nach acht Clock-Impulsen hat das CIA ein komplettes Daten-Byte empfangen. Das CIA erzeugt dann normalerweise einen Interrupt der Ebene 2, der das Betriebssystem dazu veranlaßt, folgende Schritte zu übernehmen: > Lesen des seriellen Datenregisters des CIA. > Invertieren und Rechtsrotieren des Bytes, um wieder den ursprünglichen Tasten-Code zu erhalten. > Ausgabe des Handshake-Impulses. > Interne Weiterverarbeitung des empfangenen Codes. SYNCHRONISATION: (** So und jetzt kommt das, was ich am Telefon gesagt habe: **) Um eine fehlerfreie Datenübertragung durchführen zu können, muß das Timing von Sender und Empfänger übereinstimmen. Die Bit-Position bei der seriellen Übertragung muß bei beiden identisch sein. Sonst kann es passieren, daß das Keyboard alle acht Bits ausgegeben hat, während sich der serielle Port des CIAs noch irgendwo mitten im Byte befindet. Ein solcher Verlust der Synchro- nisation tritt immer dann auf, wenn man den Amiga einschaltet oder die Tastatur in einen bereits laufenden Amiga einsteckt. Der Computer hat keine Möglichkeit, eine fehlerhafte Synchronisation zu erkennen. Diese Aufgabe wird von der Tastatur übernommen. Nach jedem ausgegebenen Byte wartet die Tastatur maximal 145 Millisekunden auf das Handshake-Signal. Trifft es nicht innerhalb dieses Zeitraums ein, nimmt der Tastaturprozessor an, daß ein Übertragungsfehler vorliegt, und leitet einen speziellen Modus ein, mit dem er versucht, die verlorene Syn- chronisation wiederzugewinnen. Dazu gibt er immer eine 1 auf der KDAT- Leitung zusammen mit einem Clock-Impuls aus und wartet dann wieder 145 ms auf das Synchronisationssignal. Dies wiederholt er solange, bis er ein Handshake-Signal vom Amiga empfängt. Damit ist die Synchronisation wieder hergestellt." So, nachdem wir jetzt viel Fachjargon um die Ohren geschmissen haben, es ist ganz einfach (HaHa!): Ich empfehle, den 3-MHz-Quartz, der sich auf der Tastaturplatine befindet, auszutauschen. Falls diese Maßnahme nicht den gewünschten Erfolg bringen sollte, dann mußt Du den CIA-Baustein des seriellen Ports austauschen, da der Fehler nur an diesen zwei Positionen liegen kann. Ich habe zuerst den 3-MHz-Quartz empfohlen, da es erstens einfacher und billiger ist, hier zu suchen, bevor Du den ganzen Computer auseinandernimmst. Falls Du mit dieser Arbeit nicht vertraut bist, es gibt in der Interessen- gemeinschaft Hardware-Bastler unter uns. Wende Dich an Jörg Herz. Er wird Dir die entsprechenden Adressen geben. Ich hoffe, ich habe Dir wenigstens etwas geholfen. Wie ich am Telefon ge- sagt habe, eine Interessengemeinschaft ist nicht nur da, um PD-Disketten auszutauschen, sondern frei nach dem Motto: "You scratch my back and I'll scratch yours". Falls noch ein Problem auftaucht, scheue Dich nicht, ruf ruhig an, die Post hat's nötig. Bis zum nächsten Mal. (ROW) PS: Ich bedanke mich bei meiner Frau, daß sie um 0:30 Uhr nachts diesen Brief für mich geschrieben hat, da mein Arm seit fünf Wochen in Gips war.