Forum: Mikrocontroller und Digitale Elektronik 8x8 Tastaturmatrix simulieren


von Mario G. (rodenberger)


Lesenswert?

Hallo
Ich suche einen Chip oder sonnst was, mit dem man eine 8x8
Tastaturmatrix simulieren kann.
Dabei müssen die Ausgänge potentialfrei sein!!!!!
Also von der Sache her 8x8 elektronische Schalter.
Ansteuern möchte ich das über serielle Signale oder notfalls auch
parallel.

Zur weiteren Information:
Ich möchte eine PS/2 Tastatur an einen alten Rechner (C64) anschließen.
Bitte nicht lachen ;o).
Für die Umwandlung der PS/2 Tastaturasignale in ASCII-Code (seriell)
habe ich einen Chip gefunden, was mir ein haufen Arbeit erspart. Die
Signale wollte ich auf einen PIC geben, der mir das entsprechend
umrechnet wie ich es brauche.
Soweit alles klar.
Nun erscheint mir die Ansteuerung der C64 Tastatur(-eingages) etwas
kriminell, da sehr zeitkritisch.
Die Matrix besteh aus 8x8, wobei 8 davon Ausgänge sind und 8 Eingänge,
alle Leitungen liegen auf H-Pegel.
Soweit ich rausgefunden habe erfolgt die Ansteuerung der Ausgänge per
Impulsen. Dummerweise erfolgt bei der 1. Leitung nur ein Impuls, wenn
man eine Taste dieser Reihe drückt. So kann ich den Impuls den es
eigentlich nicht gibt, mit dem PIC NICHT syncronisieren um den
entsprechenden Ausgang gegen Masse zu schalten.
Die geringe Rechenarbeit im PIC würde auch eine geringe Verschiebung des
Schaltvorganges bedeuten, was vermutlich zu fehlern führt.
Dazu kommt, das ich Leitung 1 nicht generell auf L ziehen kann um den
Impuls generell zu bekommen , da das ebenfalls vom C64 registriert wird
(Joystick).
Deshalb werde ich die Signale wohl 1:1 durchschalten müssen.
Ich hoffe ich habe es Verständlich geschrieben.

Vielen Dank für jeden Hinweis!
Gruß Mario

von Peter D. (peda)


Lesenswert?

2 Analogmultiplexer (74HC4051).

Wenn bestimmte Tasten gleichzeitig gedrückt werden müssen, wirds aber 
aufwendiger.


Peter

von Mario G. (rodenberger)


Lesenswert?

Hallo Peter,

sehe da keinen Lösungsweg.

Einen Ansatz habe ich noch.
Ich verbinde die 8 Ausgänge (C64) mit 8 Schaltern (elektronische) diese 
sind dann alle miteinander verbunden, an den Eingängen das gleiche 
Spiel.
Die 16 Schalter sind dann mit einer Leitung verbunden.
So brauche ich nur 16 Schalter, kann dann aber auch immer nur eine Taste 
(Tastendruck) simulieren. Das wäre denkbar. Shift bekommt dan eben einen 
gesonderten Schalter.
Den Begriff Schalter bitte nicht als solchen mit Hebel verstehen ;o)

Gruß Mario

von Andreas K. (a-k)


Lesenswert?

Peters Ansatz: Outputs => 8:1 Muxer => 1:8 Muxer => Inputs.

Damit wird eine Verbindung zwischen exakt einem Output und einem Input 
hergestellt, bzw. bei abgeschaltetem Muxer-Enable keine. Wie Peter schon 
schrieb, versagt dieses Verfahren, wenn mehrere Tasten gleichzeitig 
gedrückt werden müssen.

Bei mehreren gleichzeitig nötigen Tasten lässt sich das im Prinzip 
replizieren, aber der Aufwand steigt halt entsprechend. Für 
Shift/Control-Tasten wird das sicherlich nötig sein, kann aber ggf. 
entsprechend reduziert werden, d.h. ein 4066 Muxer dürfte dafür reichen. 
Wobei dann je nach Aufbau der Matrix noch Dioden nötig sein können um 
Kurzschlüsse zu vermeiden.

Luxus-Alternativen: Dual-Port-RAM, Crosspoint-Switches, das PLA in 
Microcontrollern wie ADuC702x.

von Mario G. (rodenberger)


Lesenswert?

Hallo

Sorry, da hatte ich mich im Datenblatt verkuckt.
Ich war der Meinung das sind NUR 8 Ausgänge.
OK, dann würde das gehen und so Versuch ich das mal.
Für was brauch ich eine negative Spannung an Vee des 4051?

von Andreas K. (a-k)


Lesenswert?

Mario G. wrote:

> Für was brauch ich eine negative Spannung an Vee des 4051?

Garnicht. Auf GND legen. Die brauchst du, wenn du mit dem Teil auch 
negative Spannungen durchschalten willst.

von spess53 (Gast)


Lesenswert?

Hi

Masse.

MfG Spess

von Andreas K. (a-k)


Lesenswert?

PS: Die Sache mit den Dioden ist Quark. Das Problem hat der Original-C64 
genauso, somit wird der verwendete Abfrage-Code einen high/low Konflikt 
bei gleichzeitig gedrückten Tasten nicht entstehen lassen.

PPS: Wobei der Code in http://www.c64-wiki.de/index.php/Tastatur exakt 
dieses Problem hat, denn bei mehreren gedrückten Tasten werden ohne 
zusätzliche Massnahmen 2 Outputs miteinander verbunden. Müsste man mal 
im Schaltplan des C64 nachschauen, ob dagegen irgendwas vorgesehen ist. 
Andererseits sind 6520/22 bei sowas recht unempfindlich.

von Mario G. (rodenberger)


Lesenswert?

Hallo,

ich denke auch das der C64 bei mehreren gedrückten Tasten damit kein 
Problem haben sollte.
Die Joysticks ziehen die ein Ein oder auch Ausgänge auch auf Masse.
Ganz nachzuvollziehen ist das nicht.
Shift liegt auch in der 8x8 Matrix.
Im Schaltplan ist da nichts weiter drinne, die Tasten liegen direkt am 
6526.

Vielen Dank für die Hilfe!!!

von Andreas K. (a-k)


Lesenswert?

Mario G. wrote:

> Für die Umwandlung der PS/2 Tastaturasignale in ASCII-Code (seriell)
> habe ich einen Chip gefunden, was mir ein haufen Arbeit erspart.

Wirklich? Immerhin musst du die Information "gedrückt" und "losgelassen" 
an die C64 Matrix durchreichen. Auch Information über die Shift-Tasten 
geht in einem PS/2-ASCII Encoder teilweise über Bord. Ich denke mit dem 
Original-PS/2-Anschluss bist du besser bedient. Entsprechender Code 
findet sich beispielsweise in einer AVR AppNote, vielleicht auch bei 
Microchip.

von Mario G. (rodenberger)


Lesenswert?

Also als Chip dachte ich an den hier:

TVT-MBKD-12 von http://www.tvterminal.de/prim.html#Impressum

der kann allerdings etwas mehr wie nötig.
Ich denke auch "nur" ein programmierter AVR.
Preislich passt mir das zwar nicht so, aber spart halt Zeit.
Wegen dem Shift habe ich nachgefragt wie der gesendete Code dann 
aussieht.
Wenn Shift und der Buchstabe getrennt kommen wäre das blöd, dann müsste 
ich wirklich wissen ob Shift gedrückt oder losgelassen ist.
Das macht mir das PS/2 Protokoll ja so umständlich.
Selber schreiben trau ich mich da wirklich nicht.

Wenn ich einen Code für einen PIC finde wärs natürlich klasse.

von Guido Körber (Gast)


Lesenswert?

Warum schließt Du die Tasten der Tastatur nicht direkt an den C64 an?

Der hat schließlich den Tastaturencoder mit integriert. Was Du machen 
willst ist viel zu umständlich. Einfach die Elektronik aus der Tastatur 
ausräumen, ggf. die Tasten neu verdrahten damit die Matrix übereinstimmt 
und direkt ran.

von Andreas K. (a-k)


Lesenswert?

Mit dem Konverterchip fängst du wenig an, weil der zwar liefert, wann 
eine Taste gedrückt wurde, nicht aber wann sie wieder losgelassen wurde, 
und über eine allein gedrückte Shift-Taste liefert er garnichts. Und ich 
wäre schon erstaunt, wenn diese Info nicht in irgendwelchen Programmen 
vom C64 genutzt wird (sowas wie: tue A solange Taste "A" gedrückt, sonst 
B).

von Mario G. (rodenberger)


Lesenswert?

Hallo,

natürlich habt ihr auf den ersten Blick recht.
Eine Tastatur ausräumen ist in der Tat viel einfacher.
Die Frage mit der Shift-Taste habe ich mir auch schon gestellt, aber ich 
denke nur Shift alleine brauch ich nicht und ich muss auch nicht wissen 
ob eine Taste länger gedrückt wird. Nur bei den Kursortasten wäre das 
Sinnvoll, wobei ich da auch ohne klar kommen würde.

Zugegeben ist jeder Euro den ich da reinstecke verloren.
Hier geht es auch mehr um den Spaß und um Erfahrungen zu sammeln.
Der ganze C64 Kram soll eigentlich in EINE Kiste, nur die Tastatur soll 
eben extra sein. Da bei einer PC-Tastatur Tasten "übrig" sind, wollte 
ich diese mit speziellen Funktionen belegen.

Einfacher wäre es einen C128 bei Ebay zu kaufen, aber darum geht es ja 
nicht ;o).

Na mal sehen wie es weiter geht.......

von juppi (Gast)


Lesenswert?

ja

der weg ist das ziel

von Andreas R. (daybyter)


Lesenswert?

Hallo!

Ich weiss, der Thread ist arg alt. Passt aber gerade so schön zu meinem 
aktuellen Projekt...

Versuche hier gerade das Gleiche. Ich verwende zum Schalten einen 
Crosspoint-Switch MT8812AE der von einem Ardunino Nano angesteuert wird, 
hab aber noch paar Probleme.

Ciao,
Andreas

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas Rückert schrieb:
> hab aber noch paar Probleme.
Welche denn?
Fang doch einfach mal mit einem neuen Thread an, verlinke diesen Thread 
darin (wenns irgendwie hilft, das sehe ich aber gerade nicht so) und 
beschreibe DEINE Schaltung (am besten mit Schaltplan, das ist die 
Sprache mit der sich Elektroniker verständigen!) und DEINE Probleme 
damit.

: Bearbeitet durch Moderator
von Andreas R. (daybyter)


Lesenswert?

Vielen Dank für Den Tipp!

Aber ich hab hier schon einen Thread:

http://www.forum64.de/wbb3/board2-c64-alles-rund-um-den-brotkasten/board107-sonstiges/board44-bastelecke/60148-projekt-pc-tastatur-an-c64-board-anschliessen/#post907573

(Ist nicht der allerletzte Stand dort, aber man bekommt auf jeden Fall 
nen Eindruck, was ich da treibe.)

Mein aktuelles Problem ist aktuell nur, dass die 8. Zeile des 
Crosspoint-Switch nicht geht. Ich warte gerade auf neue Chips, um das 
mal mit einem 2. IC gegentesten zu können.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.