www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Ps2 Tastatur Emulator


Autor: Fabian Honecker (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Feadi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sowas habe ich gerade realisiert und es funktioniert prächtig. :)

Was wäre dir der Code wert? ;)

Autor: Fabian Honecker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Fabian Honecker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Fabian Honecker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ;)

Autor: Ivan der Schrecklichste (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Feadi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

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

Gruß, Feadi

Autor: Läubi (Gast)
Datum:

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

Autor: Fabian Honecker (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.