mikrocontroller.net

Forum: FPGA, VHDL & Co. PS2-Tastatur Wiederholrate


Autor: Christian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich versuche eine normale PC-Tastatur über die PS2-Schnittstelle auf
einem Spartan3-Board von Xilinx anzusprechen. Das heißt, Tastencodes
auslesen funktioniert, ich bin mir nur nicht ganz sicher, wie die scan
code repeat rate gesetzt werden muss und über die Schnittstelle in die
Tastatur geschrieben werden muss. Kann die Rate einmalig eingestellt
werden, oder muss das zyklisch immer wieder erfolgen? Wenn ich
beispielsweise die LEDs der Tastatur aktiviere, blinken sie immer nur
einmal kurz auf und leuchten nicht durchgehend. Wenn ich die repeat
rate nur einmal setze sehe ich nämlich keine unterschiedlichen
Auswirkungen wenn ich die Rate variiere.
Vielleicht hat ja einer von euch Erfahungen mit PS2-Programmierung und
kann mir helfen.

Danke schonmal!

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>beispielsweise die LEDs der Tastatur aktiviere, blinken sie immer nur
>einmal kurz auf und leuchten nicht durchgehend. Wenn ich die repeat
>rate nur einmal setze sehe ich nämlich keine unterschiedlichen
>Auswirkungen wenn ich die Rate variiere.

Die LEDs sollten eigentlich permanent leuchten, falls Du sie einmal
angeschaltet hast. Auch sollte die Scan-Rate gespeichert bleiben.

Kann es sein dass Du - vielleicht unbeabsichtigt - einen Reset-Befehl
hinterherschickst (Wert = 0xff) ?

Autor: Christian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann ich mir eigentlich nicht vorstellen, aber ich werds nochmal in Ruhe
nachprüfen. Danke schonmal für den Tip und die Info!
Was anderes fällt mir aber gerade noch ein. Muss ich die
PS2-Datenleitung nach jedem Schreiben auf 'Z' setzen, um danach
wieder lesen zu können bzw. umgekehrt (so wie beim Speicherzugriff)?
Oder managt das der Port selber?

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Muss ich die PS2-Datenleitung nach jedem Schreiben auf 'Z' setzen, um
>danach wieder lesen zu können

Freilich. Wenn Du einen "inout"-Port nicht auf hochohmig setzt, ist
er es auch nicht. Von allein macht er es nicht.
Wenn er nicht auf 'Z' gesetzt wird und die liest ihn, dann liest Du
quasi den Wert des Ausgangstreibers, also den Wert den Du vorher
geschrieben hast.

Autor: Christian F. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ok, dann passt es schon so wie ichs gemacht hab. War mir nur nicht
sicher ob es vielleicht daran liegt, da die Datenleitung sich ja wenn
keine Taste gedrückt wird quasi "abschaltet", wenn ich das richtig
verstanden hab.
Ich schicke dir mal den Code vom Modul mit der Tastaturabfrage im
Anhang mit, konnte nämlich nichts finden wo ich evtl. einen Resetcode
geschickt haben sollte. Vielleicht kannst du ihn dir ja mal anschauen
und siehst irgendwas. Hab nämlich noch nicht soo lange Erfahung mit
FPGA-Programmierung.
Die Tastatureingabe soll für das Spiel Pong verwendet werden, wobei im
Moment die Verzögerung zwischen Tastendruck und Bewegung des Schlägers
einfach zu groß ist. Deswegen wollte ich die Wiederholrate versuchen zu
erhöhen.

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Vielleicht kannst du ihn dir ja mal anschauen und siehst irgendwas.

Ich sehe vor allem daß Du den Keyboardtakt als Taktsignal benutzt.
Da wundert mich nichts mehr...

Vielleicht kriegst Du das irgendwie zum Laufen, oder auch nicht.

Du solltest alle Deine externen Signale mit dem Systemtakt (= 50
MHZ-Oszillator auf Deinem Baord) abtasten.

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Noch was:

Um Kommandos an das Keyboard zu senden, musst der FPGA die Taktleitung
kontrollieren. Du benutzt sie aber nur als Eingang.

Autor: Christian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle anderen noch so vorhandenen Signale in den anderen Modulen taste
ich schon mit dem normalen Systemtakt ab, aber das Lesen von der
PS2-Schnittstelle muss ich doch auf den PS2-Takt synchronisieren, sonst
kanns doch passieren, dass ich ein Bit eines Scancodes doppelt oder
garnicht lese, oder? Dachte es wird immer genau ein Bit pro PS2-Takt
über die PS2-Datenleitung geschickt. Oder hab ich da was falsch
verstanden? Deswegen versteh ich jetzt auch nicht so ganz warum ich das
Tastatursignal mit dem Systemtakt abtasten soll. Kannst du mir das mal
genauer erklären?

Autor: Christian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahso...heißt das ich muss den PS2-Takt der Tastatur selber vorgeben?
Dann wäre mir wohl einiges klar...

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ahso...heißt das ich muss den PS2-Takt der Tastatur selber vorgeben?

Nicht ganz, schau Dir hierzu mal das hier an:

http://www.beyondlogic.org/keyboard/keybrd.htm

Autor: Jochen Pernsteiner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>aber das Lesen von der PS2-Schnittstelle muss ich doch auf den PS2-Takt
>synchronisieren

Wenn Du die Signale mit 50MHz abtastest sollte das schnell genug sein.
Du kannst doch einen Flankenwechsel des PS2-Taktes ganz einfach
erkennen: wenn das Signal vorher Low war und nachher High (oder
umgekehrt) dann ist's ne Flanke, und dann schaust Du dir die
Datenleitung an. Mit einem Mikrocontroller geht das ja genauso.

Wenn Du den PS2-Takt als Taktsignal benutzt, und es ist mal eine
Störung drauf, dann kommt Deine ganze Signalerkennung durcheinander.

Autor: Christian F. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke erstmal, hast mir glaube ich schon gut weitergeholfen! Bin jetzt
erstmal noch mit ein paar anderen Sachen beschäftigt, aber dann muss
ich mir die Beschreibung nochmal in Ruhe hernehmen. Meld mich falls ich
dann noch Probleme hab, danke nochmal!

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.