Schieberegister seriell auslesen
Moderator: Guido Körber
Schieberegister seriell auslesen
Hallo allerseits!
Ich denke schon seit einer Weile darüber nach, einen Adapter von einem SuperNintendo-Pad nach USB zu basteln.
Sämtliche Tastendrücke des Pads werden dabei parallel in 2 hintereinander geschaltete Schieberegister geladen und können dann seriell ausgelesen werden. Auf http://www.gamesx.com/controldata/nessnes.htm ist der Aufbau des Pads erkärt.
Ist es möglich, mit dem I/O-Warrior ein (bzw. mehrere) solches Pad anzusteuern?
Und kann sich der I/O Warrior gegenüber dem Rechner als USB-HID Gerät ausgeben, so das für das Betriebsystem keine Treiber nötig sind?
Habe nur grundlegende Kenntnisse in digitalen Schaltungen, bin aber lernwillig und für jede Hilfe dankbar
Gruß,
Gwydion
Ich denke schon seit einer Weile darüber nach, einen Adapter von einem SuperNintendo-Pad nach USB zu basteln.
Sämtliche Tastendrücke des Pads werden dabei parallel in 2 hintereinander geschaltete Schieberegister geladen und können dann seriell ausgelesen werden. Auf http://www.gamesx.com/controldata/nessnes.htm ist der Aufbau des Pads erkärt.
Ist es möglich, mit dem I/O-Warrior ein (bzw. mehrere) solches Pad anzusteuern?
Und kann sich der I/O Warrior gegenüber dem Rechner als USB-HID Gerät ausgeben, so das für das Betriebsystem keine Treiber nötig sind?
Habe nur grundlegende Kenntnisse in digitalen Schaltungen, bin aber lernwillig und für jede Hilfe dankbar
Gruß,
Gwydion
-
- Site Admin
- Posts: 2857
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Prinzipiell kann man die Schieberegister auslesen, nur wird das relativ lange dauern, da jede Pegeländerung in den IO-Warrior geschrieben werden muss und der kann nur ca. 300 Datenpakete pro Sekunde empfangen. Für einen Gamecontroller ist das zu langsam.
Ca. 150Hz Schiebefrequenz geteilt durch die Zahl der Bits und man ist bei weniger als 20 Abfragen pro Sekunde, 50 sollten es sein damit man keine Latenz beim Spielen merkt.
Der IO-Warrior ist ein HID Gerät, aber kein Joystick. Und wie sollte das funktionieren den IO-Warrior dem System als Joystick unterzuschieben? Es ist ja noch Software nötig um die Daten aus den Schieberegistern auszulesen und die Daten kommen dann nicht als Joystickdaten vom IO-Warrior, sondern müssen erst entsprechend umgesetzt werden.
Einfacher ist es den alten Elektronikkram aus dem Controller zu werfen und einen JW20GP8 einzubauen.
Ca. 150Hz Schiebefrequenz geteilt durch die Zahl der Bits und man ist bei weniger als 20 Abfragen pro Sekunde, 50 sollten es sein damit man keine Latenz beim Spielen merkt.
Der IO-Warrior ist ein HID Gerät, aber kein Joystick. Und wie sollte das funktionieren den IO-Warrior dem System als Joystick unterzuschieben? Es ist ja noch Software nötig um die Daten aus den Schieberegistern auszulesen und die Daten kommen dann nicht als Joystickdaten vom IO-Warrior, sondern müssen erst entsprechend umgesetzt werden.
Einfacher ist es den alten Elektronikkram aus dem Controller zu werfen und einen JW20GP8 einzubauen.
-
- Posts: 543
- Joined: Mon Dec 01, 2003 6:09 pm
Der IO-Warrior ist ein USB-HID, aber er meldet sicht nicht als Gamepad. Der IO-Warrior wird daher konsequenter- und beabsichtigterweise nicht im Gamecontroller Control Panel von Windows aufgefuehrt.
Das Ding schuettet also in seinem Clock-Takt die Bits seriell heraus wenn man P/S kurz auf High setzt.
Der IO-Warrior kann aber ohne Firmware-Aenderung die seriellen Daten nicht lesen.
Ein Chip der Seriell wieder in 8 bzw 16 Bit parallel wandelt muss her. Ich bin sicher das es einen Spiegelchip zum 4021 gibt.
Das Ding schuettet also in seinem Clock-Takt die Bits seriell heraus wenn man P/S kurz auf High setzt.
Der IO-Warrior kann aber ohne Firmware-Aenderung die seriellen Daten nicht lesen.
Ein Chip der Seriell wieder in 8 bzw 16 Bit parallel wandelt muss her. Ich bin sicher das es einen Spiegelchip zum 4021 gibt.
> Ca. 150Hz Schiebefrequenz geteilt durch die Zahl der Bits und man ist bei > weniger als 20 Abfragen pro Sekunde, 50 sollten es sein damit man keine > Latenz beim Spielen merkt.
Schade, das ist natürlich zu wenig
> Der IO-Warrior ist ein HID Gerät, aber kein Joystick. Und wie sollte das
> funktionieren den IO-Warrior dem System als Joystick unterzuschieben? Es > ist ja noch Software nötig um die Daten aus den Schieberegistern
> auszulesen und die Daten kommen dann nicht als Joystickdaten vom IO-
> Warrior, sondern müssen erst entsprechend umgesetzt werden.
Ich habe einfach mal ganz naiv gedacht, man kann den I/O-Warrior darauf programmieren, das zu tun.
> Einfacher ist es den alten Elektronikkram aus dem Controller zu werfen
> und einen JW20GP8 einzubauen.
Ich will unbedingt vermeiden meine Controller kaputt zu machen, sie sollen auch weiterhin an einem echten SNES funktionieren.
Schade, das ist natürlich zu wenig
> Der IO-Warrior ist ein HID Gerät, aber kein Joystick. Und wie sollte das
> funktionieren den IO-Warrior dem System als Joystick unterzuschieben? Es > ist ja noch Software nötig um die Daten aus den Schieberegistern
> auszulesen und die Daten kommen dann nicht als Joystickdaten vom IO-
> Warrior, sondern müssen erst entsprechend umgesetzt werden.
Ich habe einfach mal ganz naiv gedacht, man kann den I/O-Warrior darauf programmieren, das zu tun.
> Einfacher ist es den alten Elektronikkram aus dem Controller zu werfen
> und einen JW20GP8 einzubauen.
Ich will unbedingt vermeiden meine Controller kaputt zu machen, sie sollen auch weiterhin an einem echten SNES funktionieren.
Solange man ein Button-Press Event erzeugen kann, sollte sich das in einem Emulator mappen lassen.Der IO-Warrior ist ein USB-HID, aber er meldet sicht nicht als Gamepad. Der IO-Warrior wird daher konsequenter- und beabsichtigterweise nicht im Gamecontroller Control Panel von Windows aufgefuehrt.
Ok, d.h. ich müsste quasi das Einlesen im Pad triggern, dann 16 Takte lang die Daten in den "Spiegelchip" übertragen und das ganze dann parallel auslesen und wieder von vorne?Das Ding schuettet also in seinem Clock-Takt die Bits seriell heraus wenn man P/S kurz auf High setzt.
Der IO-Warrior kann aber ohne Firmware-Aenderung die seriellen Daten nicht lesen.
Ein Chip der Seriell wieder in 8 bzw 16 Bit parallel wandelt muss her. Ich bin sicher das es einen Spiegelchip zum 4021 gibt.
Wieviel Pins brauche ich pro Pad? Man muss das Pad ansteuern, den "Spiegelchip" und natürlich die Buttons auslesen (es werden nur 12 von 16 möglichen benutzt). So wie ich das sehe wären das maximal 2 Pads an einen I/O Warrior 40, oder?
-
- Site Admin
- Posts: 2857
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Oh, sogar 16 Bit, also noch langsamer.
Also erst mal zum IO-Warrior und Joystickfunktionen: Geht nicht, der IO-Warrior ist kein Joystickcontroller. Ohne Software auf Rechnerseite ist da nichts. Und was das Umprogrammieren des IO-Warrior betrifft, das steht schon im FAQ, dass das nicht geht.
Die einzige Lösung die ich hier sehe ist es eine Schaltung mit Schieberegister, Latch, Oszillator und Zähler aufzubauen, die einen Takt erzeugt, alle 16 Take einen Ladeimpuls für das Latch hinter dem Schieberegister erzeugt und dann einen Ladeimpuls für den Gamecontroller.
74xx595 machen sich gut als Schieberegister mit integriertem Latch. Dazu noch einen Zähler mit mindestens 5 Bit, ein paar Gatter und einen Oszillator (NE555).
Die benötigten Bits werden dann an einen JW20GP8 gehängt und fertig.
Also erst mal zum IO-Warrior und Joystickfunktionen: Geht nicht, der IO-Warrior ist kein Joystickcontroller. Ohne Software auf Rechnerseite ist da nichts. Und was das Umprogrammieren des IO-Warrior betrifft, das steht schon im FAQ, dass das nicht geht.
Die einzige Lösung die ich hier sehe ist es eine Schaltung mit Schieberegister, Latch, Oszillator und Zähler aufzubauen, die einen Takt erzeugt, alle 16 Take einen Ladeimpuls für das Latch hinter dem Schieberegister erzeugt und dann einen Ladeimpuls für den Gamecontroller.
74xx595 machen sich gut als Schieberegister mit integriertem Latch. Dazu noch einen Zähler mit mindestens 5 Bit, ein paar Gatter und einen Oszillator (NE555).
Die benötigten Bits werden dann an einen JW20GP8 gehängt und fertig.
Ok, vom Prinzip her habe ich es verstanden, ob ich das in einer Schaltung realisiert bekomme, steht auf einem anderen Blatt. Unsere Rechnertechnologie-Vorlesungen waren einfach zu schlechtDie einzige Lösung die ich hier sehe ist es eine Schaltung mit Schieberegister, Latch, Oszillator und Zähler aufzubauen, die einen Takt erzeugt, alle 16 Take einen Ladeimpuls für das Latch hinter dem Schieberegister erzeugt und dann einen Ladeimpuls für den Gamecontroller.
74xx595 machen sich gut als Schieberegister mit integriertem Latch. Dazu noch einen Zähler mit mindestens 5 Bit, ein paar Gatter und einen Oszillator (NE555).
Die benötigten Bits werden dann an einen JW20GP8 gehängt und fertig.
Welche Software benutzt ihr um solche Schaltungen zu planen?
-
- Site Admin
- Posts: 2857
- Joined: Tue Nov 25, 2003 10:25 pm
- Location: Germany/Berlin
- Contact:
Kommt drauf an. Die Applikationsschaltungen für die Datenblätter mache ich mit LogicWorks auf dem Mac. Das ist aber eher eine alte Angewohnheit als das es effektiv ist, das Programm ist zu alt, aber ich kenne es auswendig. Leiterplatten und die dazugehörigen Schaltungen machen wir mit Target.gwydion wrote:Welche Software benutzt ihr um solche Schaltungen zu planen?
Simulation oder VHDL benutzen wir allerdings nicht, dazu sind die meisten der Schaltungen nicht komplex genug bzw. sind die Simulatoren nicht in der Lage die Dinge zu erfassen, die interessant wären.
Ich würde vorschlagen z.B. ein EPLD (z.B. MAX 7000A Serie) von Altera zu verwenden. Die Programmierung ist ähnlich wie Verilog. Das Basistool mit Kompiler, Simulator und Programmer ist kostenlos (nur Registrierung erforderlich). Einziges Problem Du brauchst ein Programmiergerät. Vielleicht hast Du soetwas ja, sonst kostet es ca. 100€.