C64 Keyboard -> PS/2

Hi Kolja, die Plastiknoppen sind mit einer leitenden Beschichtung überzogen. Drückst du jetzt die Taste auf die Mäanderleiterbahn dann verringert sich den ohmsche Widerstand. Auswerten ? Smitt-Trigger ? Gruß Andy

Reply to
Andreas Weber
Loading thread data ...

Hallo!

Ich baue z.Zt. einen PC in ein altes Brotkastengehäuse ein und habe noch einige Probleme mit der Umsetzung der C64 Tastatur als Steuergerät.

Ursprünglich dachte ich, daß sowohl 64er, als auch pc-tastatur im prinzip auf einem viele Bit breiten Strang einen Code rausgeben, der dann verarbeitet wird. Also dachte ich ich nehm die C64-Tastatur, setze dahinter eine mehr oder weniger gigantische (minimieren hab ich schließlich mal gelernt) Logik und gehe damit auf die Elektronik einer PC-Tastatur (der Teil der aus den Matrixsignalen z.B. PS/2 macht).

Jetzt bin ich mächtig verwirrt, weil ich immerzu lese, daß Tastaturmatritzen anscheinend nicht parallel ausgelesen werden, sondern nacheinander die Zeile und spalte.

Muss ich meine einfach Lösung jetzt wirklich komplett über bord schmeißen und mich mit dem timing und den ganzen details der verschiedenen tastaturstandarts rumärgern?

Dann noch eine allgemeine Frage: Sowohl im C64 als auch in einer modernen PC-Tastatur (im übrigen auch in Fernbedienungen und fast allem mit Tasten) gibt es ja keine "richtigen" Schalter mehr, sondern diese komischen teilweise gummiartigen Sensoren... wie funktionieren die? oder was eigentlich viel intressanter ist für mich: wie kann ich die Signale die davon kommen abfragen um einen verwertbaren Hi/Lo-Pegel draus zu machen?

Hoffe ihr könnt mir ein paar anhaltspunkte geben.

Gruß

Kolja

Reply to
Kolja Märtens

Kolja Märtens schrieb:

faslch gedacht

so einfach ist das nicht

Richtig. Bsp.: Die Tastatur ist elektrisch eine Matrix aus x Spalten und y Reihen. An jedem Kreuzpunkt sitzt eine Taste die Spalte und Reihe verbindet. Jetzt wird zyklisch vom Contoller jede Spalte unter Spannung gesetzt. Ist eine Taste gedrückt, wird diese Spannung an der entsprechenden Reihenleitung ausgegeben. Der Controller kann somit aus der Nummer der Spalte, die er selber ansteuert, und der Rückmeldung der Nummer der Reihe feststellen, welcher Kreuzpunkt verbunden ist. Und damit generiert er einen Tastencode, welcher seriell ausgeben wird. Der Kontroller generiert unterschiedliche Codes, wenn er den Druck oder das Loslassen einer Taste feststellt. Die weitere Verarbeitung dieser generierten Codes macht dann der Tastaturtreiber im Computer. Also die Erkennung, ob der Tastencode ein ASCII-Zeichen ist, ob zuvor oder zugleich die Shift, Ctrl, Alt oder sonstige Steuertaste gedrückt wurde.

Wird dir wohl nix anderes übrig bleiben. Ausser das C64-Brett liefert bereits serielle Codes die vom Timing und Pegel der PC-Tastatur entsprechen. Dann würde das Schreiben eines speziellen Keyboardtreibers reichen.

Die sind elektrisch leitend und erzeugen beim Druck auf die Kontaktfläche einen ähnlichen Kurzschluss wie ein Schalter. Nur nicht ganz so niederohmig. Das ist der aber dem Tastaturkontroller ziemlich egal. Entweder sehr hochohmig oder sehr niederohmig. Mehr interessiert ihn nicht.

An einer Seite Spannung anlegen und auf der anderen Seite der Kontaktfläche messen bzw. auf den Eingang eines Gatters legen.

Gruß Wolfgang

Reply to
Wolfgang Gerber

Hallo, Kolja,

Du (webmaster) meintest am 12.07.03:

C64-Tastatur, um einen IBMpatiblen anzusteuern? Mühsam. Der C64 hat die Signale per CPU dekodiert, der IBMpatible läßt sie über den Tastatur-Kontroller (8042) aufbereiten, der sie wiederum von einem Kontroller in der Tastatur angeliefert bekommt.

Wo willst Du die Signale einspeisen: am Tastaturstecker (5-pol. DIN oder PS2) der Platine? Oder anstelle des 8042?

Viele Grüße! Helmut

Reply to
Helmut Hullen

Hallo, Kolja,

Du (webmaster) meintest am 12.07.03:

Das ist nicht "18 Bit".

Viele Grüße! Helmut

Reply to
Helmut Hullen

"Helmut Hullen" schrieb :

Hab jetzt grad meine offene alte Tastatur nicht hier, weiß deshalb nicht genau welche ICs da drin sitzen, waren aber soweit ich mich erinnere zwei. Ich wollte direkt da rein gehen, wo im Inneren der Pc-Tastatur das Kunststoff-Flachband reingeht, also die unmittelbaren Signale die von der Matrix kommen.

Ich denke mein weiteres Vorgehen wird jetzt erstmal, mich genau mit dieser Matrix auseinanderzusetzen. Erstmal ein paar tests, wie die beiden Matritzen überhaupt mit angelegten Spannungen umgehen.

Ich will meine Grundidee noch nicht so ganz aufgeben, denn nach meiner Vorstellung sollte es möglich sein, das Drücken einer Taste zu simulieren indem man den richtigen Code auf die Leitung der Matrix legt. Ob der Controller das dann alles in einem rutsch ausliest oder zeilen/spalten-weise kann mir doch egal sein, oder? Der C64 hat z.B. eine 18 Bit breite Zuleitung (zwei davon vermutlich + und masse) also sollte es da doch keine "Doppelbelegung" geben. In der PC-Tastatur meiner Meinung nach ähnlich, also auch hier nicht die Notwendigkeit sich um die Zeilen/Spalten/Timing-Geschichte Sorgen zu machen.

Oder habe ich da noch einen massiven Denkfehler?

Gruß

Kolja

Reply to
Kolja Märtens

Hallo, Kolja,

Du (webmaster) meintest am 12.07.03:

Ist auch falsch. Die Tastatur-Matrix wird anders gescannt.

Auf die Schnelle habe ich nur den Schaltplan des Commodore cbm610 erwischt, aber der hat die Tastatur ähnlich dekodiert: 6 Zeilen und 17 Spalten.

Viele Grüße! Helmut

Reply to
Helmut Hullen

"Helmut Hullen" schrieb:

nein, natürlich nicht! Bitte das zu entschuldigen, syntaktisch korrekt sollte man nach allem was ich weiß wohl 2x8Bit sagen. Ich wollte damit zum Ausdruck bringen, daß 18 Leitungen am Keyboard hängen. Was nun genau wie belegt ist weiß ich noch nicht, die 2x8 und +/- erscheinen mir aber am logischsten.

Gruß

Kolja

Reply to
Kolja Märtens

Nachtag und Ergänzung:

Ich hab mich grad noch ein wenig "umgelesen"... Ich denke mein Ansatzpunkt wird wohl viel weniger in der Hardware liegen, als vielmehr in der Entwicklung eines geeigneten Linuxtreibers.

Mein nächster Schritt wird der Vergleich beider Matritzen unter Testbedingungen und wenn ich da (hoffentlich) halöbwegs kompatible Verhaltensmuster finde (und das sollte ich, denn schließlich beruhen beide Tatsenfelder auf dem gleichen Prinzip (welches Wolfgang Gerber freundlicherweise erklährt hat). Also setzen wir mal voraus, daß mein C64 Keyboard an der PC-Tastatur-Elektronik vermutlich einfach wirren Code raushaut, aber immerhin eine konstanten, nachvollziehbaren Code, dann sollte ein eigener Linux-treiber (evtl. nur ne map, darüber muss ich noch viel lesen) daraus für den Kernel verständliche Signale machen können.

Erstmal Danke für die Hilfe, ich melde mich an dieser Stelle wieder, wenn ich mehr weiß. Wenn keine Einwände bestehen f'uppe ich dann später in eine linux-group.

Gruß

Kolja

Reply to
Kolja Märtens

"Helmut Hullen" schrieb:

formatting link
was anderes... aber warum darüber streiten, ich mach die Bude morgen auf und gucks mir genauer an.

Reply to
Kolja Märtens

Hallo, Kolja,

Du (webmaster) meintest am 12.07.03:

Stimmt - da ist es im ersten Moment verlockend, mit Bytes arbeiten zu wollen. Aber Tastaturmatrizen werden anders ausgelesen.

Viele Grüße! Helmut

Reply to
Helmut Hullen

Glaub ich nicht.

Nimm einen kleinen AVR Microcontroller und die beiden Application Notes:

AVR243: Matrix Keyboard Decoder (11 pages, updated 01/03) AVR313: Interfacing the PCAT Keyboard (13 pages, updated 5/02)

(siehe

formatting link
und bastel Dir einen passenden Tastaturcontroller. Wenn Du mal ins BIOS mußt, nützt Dir der Linux-Kerneltreiber nichts, und X11 will auch noch angepaßt werden.

Mit freundlichen Grüßen

Dipl.-Ing. Frank-Christian Krügel IstDa Kommunikationssysteme

Reply to
Frank-Christian Kruegel

Frank-Christian Kruegel schrieb:

Der Weg ist grundsätzich richtig. Aber ganz so einfach, wie sich das hier liest, ist es leider nicht. Die beiden Appnotes sind nämlich jeweils nur die halbe Miete, außerdem sind die verwendeten Algorithmen teilweise suboptimal, und man braucht auch noch die Hardwareschaltung (die allerdings mit dem AVR wirklich sehr einfach ist). Man muss Vieles anpassen und optimieren, und die Seite des C64 ganz neu machen.

Ich habe 2 Jahre an meinem eigenen Tastaturumsetzer herumgebastelt. Vor allem mit dem Timing gibt es große Probleme. Am Schluss habe ich die Programme aus den Appnotes weg geworfen und eine komplett neue Software in C geschrieben.

Und so ganz nebenbei: Vorsicht beim Testen! Einmal den Data- oder Clock-Pin versehentlich mit Masse kurzgeschlossen, und man braucht ein neues Motherboard ... :-(

Joachim

Reply to
Joachim Schmid

Ich weiß nicht ob das auf dem Schaltplan so gut rausgekommen ist, die 18 Leitungen zur Tastatur haben folgende Aufgaben: Je 8 Leitungen für die 8 Spalten und 8 Zeilen. 64 Tasten sind da in einer Matrix angeordnet. Beim Drücken einer Taste wird eine Zeile mit einer Spalte verbunden. Aber das hast du ja mit deinem PC-Tastaturen-Test unten schon rausbekommen. Die Restore-Taste ist ausserhalb der Matrix, für die sind die restlichen 2 Leitungen. Die rechte und linke Shift-Taste sind extra angeschlossen und Shift-Lock ist eine mechanische Arretierung der linken Shift-Taste. Soviel zum elektrischen. Dass du das an eine Elektronik aus einer PC-Tastatur anschliessen kannst hast du ja schon rausgefunden und dass die Matrix beim PC anders angeordnet ist auch ;-) Jetzt also: Eigene Elektrik bauen oder die geänderte Tastenbelegung Softwaremäsig aufdröseln.

Georg

Reply to
Georg Seegerer

Das erklährt, warum ich bisher keine Funktion auf der Taste habe... Eigentlich weiß ich noch nicht, wofür ich die nutzen soll, aber kann ja nicht schaden, sie laufwähig zu machen.

Gruß Kolja

Reply to
Kolja Märtens

PolyTech Forum website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.