Forum: Mikrocontroller und Digitale Elektronik Ps2 Tastatur Emulator


von Fabian Honecker (Gast)


Angehängte Dateien:

Lesenswert?

Hallo allerseits,

irgendwie bekomme ich es einfach nicht gebacken ein Zeichen vom AVR an
den PC über PS2 zu schicken.
Gegooglelt habe ich schon ausführlich und auch diverste Threads hier zu
diesem Thema durchgelesen. Ich bin der Ansicht, eigentlich das PS2
Protokoll so ziemlich verstanden zu haben und das Signal sieht mit dem
Oszilloskop eigentlich ganz gut aus (soweit ich das beurteilen kann).

Aber irgendwie klappt es leider nicht.
Sendet die Tastatur vielleicht irgendwelche "versteckten" befehle?

Ich habe meinen Source Code mal als Anhang mitgeschickt.

Vielen Dank für Eure Hilfe
Fabian

von Feadi (Gast)


Lesenswert?

Hi,

schau Dir mal das an:
http://www.computer-engineering.org/

Ich würde einfach einen AVR mit einer Tastatur, und dem Computer
verbinden. Als erstes würde ich dann die Daten von der Tastatur nur
weiterreichen. Wenn das klappt würde ich selber welche senden.

So kommst Du der Sache, schritt für schritt, näher.

Gruß, Feadi

von Ich (Gast)


Lesenswert?

Sowas habe ich gerade realisiert und es funktioniert prächtig. :)

Was wäre dir der Code wert? ;)

von Fabian Honecker (Gast)


Lesenswert?

@Feadi:
das mit dem direkt verbinden habe ich auch schon versucht, allerdings
habe ich Schwierigkeiten, das Signal darzustellen, da mein einfachs
Oszilloskop nichts speichern kann.


@Ich:
nen Blick hinein wäre er mir schon wert ;)
Oder wo ist mein Haken?

von Fabian Honecker (Gast)


Lesenswert?

ach ja, ich hatte vergessen zu erwähnen, dass ich, solange die Tastatur
direkt angeschlossen war, das Senden mit meiner Funktion geklappt hat.
Deshalb vermute ich, dass die Tastatur oder der PC etwas dazwischen
macht, das ich nicht sehen kann...

außerdem ist es ein Notebook mit einem PS/2 Anschluss, wo auch ne Maus
reinpasst. Macht das ein Unterschied?

von Olaf (Gast)


Lesenswert?

Das Notebook macht sicher keinen Unterschied. Aber wenn ich mich recht
erinnere so tauscht der MCS48 im PC und die Tastatur beim Anschluss
verschiedene Einstellungssequenzen aus. Z.B damit die Tastatur weiss
ob sie im XT oder AT-Mode arbeiten soll.
Ich koennte mir vorstellen das ein PC einfach den Tastaturport abhaengt
wenn du das nicht 100% richtig emulierst.

Olaf

von TravelRec. (Gast)


Lesenswert?

Wichtig ist vor allem, keine ungültigen Codes zu senden, da dies der
Tastaturprozessor mit willkürlichem Aufhängen quittiert oder wilde
Tastaturkombinationen einstellt, aus denen man nicht mehr heraus kommt.
Die Clock-Rate sollte zwischen 10kHz und 16kHz liegen. Die
Fehlerkorrektur muß auch penibelst Protokoll-konform sein. Nützliche
Hinweise auch auf www.marjorie.de . Ansonsten ist die PS2-Schnittstelle
recht harmlos und umgänglich.

von Fabian Honecker (Gast)


Lesenswert?

Danke erst mal für die Hilfe bisher!
Doch noch eine Frage:

was fürt die Tastatur genau für Initialisierungen aus?
Ich habe gehört, dass sie als erstes 0xAA sendet,
doch als ich das versucht hatte, kam keine Antwort vom PC.
Er hat also data nicht auf LOW gezogen.
Oder muss ich den Befehl öfters hintereinander senden?
Das hab ich mal versucht, indem ich ne Schleife gemacht hab.
Dann wollte der PC irgendwann auch mal was antworten, hat also data auf
LOW gezogen. Aber nicht bei jedem senden.
Leider kann mein Oszilloskop nicht darstellen, was der PC da senden
wollte.
Eigentlich müsste doch einmal reichen, solange data und clock HIGH
sind.
Irgendwie sieht das alles so einfach aus, wenn mans sich anschaut, aber
ich kriegs leider einfach ned gebacken :(

Ich hoffe ihr habt noch ein bisschen Geduld mit mir ;)

von Ivan der Schrecklichste (Gast)


Lesenswert?

Also wenn Du mit Initialisierung meinst vor jedem Tastendruck, das macht
meine Tastatur nicht. Lass das mal weg. Wenn ich eine Taste drücke, wird
der Code der Taste gesendet solange bis ich sie loslasse, dann wird
einmal der Break-Code gesendet und dann nochmal der Code der Taste.
Wenn ich eine Taste also nur ganz kurz drücke (antippe) werden 3 Codes
à 11 Bit übertragen (jeweils 1 Startbit + 8 Datenbits + Parity-Bit +
Stopbit = 11 Bit).

von Feadi (Gast)


Angehängte Dateien:

Lesenswert?

Hi,

wenn es mit angeschlossener Tastatur funktioniert, würde ich darauf
Tippen das Du keine PullUP's an dem µC hast.

Gruß, Feadi

von Läubi (Gast)


Lesenswert?

Vieleicht muss deine "Tastatur" auch angeschlossen sein bevor du den
PC hochfährst manche Baords haben Probleme mit Hotswap :)

von Fabian Honecker (Gast)


Lesenswert?

Hallo,

so, ich habe das Problem jetzt endlich gelöst!
Es lag zum einen an meiner fehlerhaften Initialisierung,
ich habe es jetzt geschafft über die Soundkarte vom PC
ein Oszillogramm aufzunehmen und so genau die Initialisierung
zu beobachten.

Meine Empfangsmethode vom PC ging weiterhin nicht, weil mein AVR viel
zu lange brauchte (Trotz 8Mhz) um meinen Code abzuarbeiten, bevor ner
nächste Interrupt durch den PC ausgelöst wurde.
Mit Polling habe ich das jetzt endlich gelöst.

Danke für eure Hilfe!

PS: @admin: aus mir schleierhaften Gründen (vielleicht F5 zum
Aktualisieren?) sind ein paar meiner Beiträge mehrmals gepostet worden.
Bitte die doppelten löschen. Danke.

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.