Interfacing eine PS2 (Playstation 2) Regler - CuriousInventor Tutorials

Intro: Es gibt alle Arten von Führungen, die erklären, wie man einen PS2-Controller bereits gibt, zu verbinden. Das Ziel hier ist es, die Informationen zu konsolidieren und es so schnell wie möglich machen, um zum Laufen. Bitte lassen Sie uns über Fehler kennen!

Aktualisieren. Überprüfen Sie die Arduino ps2 Bibliothek heraus, dass Bill Porter Politur geholfen.

  • Hardware-Schnittstelle / Wiring Anschlüsse
  • Software-Protokoll
    • Low Level. wie die einzelnen Bytes übertragen
    • hohes Level. Paketbeschreibungen / Protokoll
    • Tastenbelegungen für PS2 Dual Shock Controller und Guitar Hero-Controller.
    • Die vollständige Befehlsliste und Erklärungen.
  • Beispielbefehle notwendig, alle analogen (Joysticks und Drücke) und Steuermotoren zu lesen,
  • Aufgezeichneten Befehl und Antwort zwischen echten PlayStation und Steuerung während der ersten Verbindung
  • MPLAB Projekte (C-Code) für eine PIC18F4550 PS2 zu steuern. Sie werden einen Programmierer (PICKIT2) und www.microchip.com ist kostenlos IDE, MPLAB müssen.

Hardware-Schnittstelle / Wiring Anschlüsse:

Interfacing eine PS2 (Playstation 2) Regler - CuriousInventor Tutorials

Draht Farben und Funktionalität: Es gibt 9 Drähte, 6 Drähte auf einem Minimum benötigt werden, um die Steuerung zu sprechen: (Takt, Daten, Befehl, Macht - Boden, Aufmerksamkeit). Für den Betrieb Vibrationsmotoren wird motor_power benötigt.

Low-Level-- Wie Bytes und Pakete übertragen werden:

Die Abspielstation sendet ein Byte zur gleichen Zeit, wie es über die serielle Kommunikation ein (Vollduplex) empfängt. Die folgenden Bilder zeigen Istwertsignale zwischen einem playstation und Gitarren-Held Controller im Analogmodus konfiguriert (Wammy bar sendet 7-Bit-Wert (0x7f - 0x00)).

Interfacing eine PS2 (Playstation 2) Regler - CuriousInventor Tutorials

Die Uhr wird hoch gehalten, bis ein Byte gesendet werden soll. Es fällt dann niedrig (aktiv low) 8 Takte zu starten, während der Daten gleichzeitig gesendet und empfangen wird. Wenn die Taktflanke niedrig abfällt, beginnen die Werte auf der Linie zu ändern. Wenn die Uhr von niedrig auf hoch geht, wird Wert tatsächlich gelesen. Bytes übertragen LSB (Least Significant Bit) zuerst, so dass die Bits auf der linken Seite (früher in der Zeit) sind weniger signifikant.

Interfacing eine PS2 (Playstation 2) Regler - CuriousInventor Tutorials

Interfacing eine PS2 (Playstation 2) Regler - CuriousInventor Tutorials

Scope-Aufnahmen, die erkennen und Aufmerksamkeit Linien.

High-Level: Paketstruktur, Befehls- und Daten-Bedeutungen:

Ein großer Teil dieses Abschnitts ist bei Dowty Konsolidierungs- und haus brauen Portsauganleger und Emulator bezogen.

Pakete haben einen Drei-Byte-Header, gefolgt von weiterem 2, 6 oder 18 Bytes zusätzlichen Befehl und Steuerungsdaten (wie Tastenzustände, Vibrationsmotor Befehle, Knopfdruck, etc.).

Ein Beispiel tauschen, dass von einem Dual-Shock-Controller, wenn in dem ersten eingesteckt:

Controller Standardwerte in den digitalen Modus und überträgt nur den Ein- / Aus-Status der Tasten in der 4. und 5. Byte. Keine Joystick Daten, Druck oder Vibration Control-Fähigkeiten.

(Keine Tastenbetätigung)

  • Jedes der 18 Bits in FF FF 03 entspricht einen Antwort-Byte, mit den digitalen Zuständen starten, dann 4 analoge Joysticks, dann 12 Druck Bytes.
  • Standardmäßig werden die Druckwerte nicht zurückgeschickt, so ist dies der Befehl, der notwendig ist, um sie zu aktivieren.

Byte-Sequenz konfigurieren Controller für Analogmodus + Taste Druck + Vibration Control

Die folgende Sequenz wird ein Setup-Controller wieder alle verfügbaren Analogwerte zu senden und Karte auch die linken und rechten Motoren Bytes 4 und 5 zu befehlen.

-- 0x42 Poll einmal nur zum Spaß

-- 0x43 Go in den Konfigurationsmodus

-- 0x44 Schalten Sie Analogmodus

-- 0x4D Setup-Motorbefehl-Mapping

-- 0x4F Config-Controller alle Druckwerte zurückzukehren

-- 0x43 Beenden config mode

-- 0x42 Beispiel Poll (loop this)

Taste Drücken (0xFF = vollständig gedrückt)

Händeschütteln (erste Kommunikation) Aufnahmen zwischen Play Station 2 und verschiedenen Controller

Dieses Blatt listet sowohl die Befehle und Reaktionsdaten zwischen einer Spielstation und verschiedenen Controllern treffen, wenn die Steuerung zuerst eingesteckt ist. Enthält Gitarrenhelden, Doppelschlag, Draht weniger katana und chinesischen knock-off (sieht genauso aus wie der Doppelschlag).

Sowohl ein Gitarrenheld-Spiel und Schmutz-Bike-Spiel (Vibrationen Motorsteuerdaten zu erhalten) verwendet wurden.

Wir verwenden 2 PIC18F4550 den Hafen zu tun Sniffing, siehe weiter unten den Code zum Download bereit.

PIC18F4550-Code, um eine PlayStation 2 Dual Shock oder Guitar Hero-Controller lesen

Das erste Programm wird eine Steuerung im analogen Modus so konfiguriert, dass alle Joysticks und Tastendrücke können gelesen werden. Es setzt auch den Linken Druck auf den linken Vibrationsmotor und den Rechts-Taste Druck an der Steuerung des kleineren rechtsen Vibrationsmotor zu wechseln.

Jeder Befehl und Antwort-Paket ist eine serielle Schnittstelle auf 57600 kbs ausgesendet.

Das zweite Programm kann in zwei Modi betrieben werden:

  • Kontinuierliches SPI-zu-Seriell: Jeder SPI-Byte wird bei 57600. den seriellen Anschluss gesendet Da die Abspielstation in 512kbs kommuniziert, verwendet der Code, um einen Ringpuffer SPI Bytes zu erfassen, bis die playstation zwischen Paketen unterbricht, zu welchem ​​Zeitpunkt sie sendet die Daten an über serielle.
  • Bulk Capture and Dump: Caputer etwa 650 Bytes von Daten in Puffer, dann den gesamten Charge auskippen über serielle. Wir habe diesen Code die erste Kommunikation zwischen einer Play Station und der Steuerung zu erfassen, wenn sie zum ersten Mal verbinden. Es gibt wahrscheinlich etwa 100 sauberere Wege, dies zu tun, aber die PICs wir vorhätten hatte nur eine SPI-Port, so wurden zwei PICs gleichzeitig verwendet, um sowohl den Befehl und Datenleitungen zu erfassen. Ein PIC senden würde es die Aufnahmen sofort zurück, und die andere für ein paar Sekunden warten würde, während welcher Zeit sich ein Schalter umgelegt wurde die PC-Serien zum 2. PIC zu verbinden.

Hinweis: Verbinden des SPI Uhr mit einer Taktspielstation PIC vermeiden, wenn der PIC als SPI-Master konfiguriert ist.