Schieberegister seriell auslesen

Dies ist das deutsche Forum für alle Themen um den IO-Warrior. Beiträge bitte nur in Deutsch.

Moderator: Guido Körber

Post Reply
gwydion
Posts: 5
Joined: Wed Aug 03, 2005 1:04 pm

Schieberegister seriell auslesen

Post by gwydion »

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 :D

Gruß,
Gwydion
Guido Körber
Site Admin
Posts: 2857
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

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.
Robert Marquardt
Posts: 543
Joined: Mon Dec 01, 2003 6:09 pm

Post by Robert Marquardt »

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.
gwydion
Posts: 5
Joined: Wed Aug 03, 2005 1:04 pm

Post by gwydion »

> 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.
gwydion
Posts: 5
Joined: Wed Aug 03, 2005 1:04 pm

Post by gwydion »

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.
Solange man ein Button-Press Event erzeugen kann, sollte sich das in einem Emulator mappen lassen.
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.
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?
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?
Guido Körber
Site Admin
Posts: 2857
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

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.
gwydion
Posts: 5
Joined: Wed Aug 03, 2005 1:04 pm

Post by gwydion »

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 schlecht :roll:
Welche Software benutzt ihr um solche Schaltungen zu planen?
Guido Körber
Site Admin
Posts: 2857
Joined: Tue Nov 25, 2003 10:25 pm
Location: Germany/Berlin
Contact:

Post by Guido Körber »

gwydion wrote:Welche Software benutzt ihr um solche Schaltungen zu planen?
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.

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.
gwydion
Posts: 5
Joined: Wed Aug 03, 2005 1:04 pm

Post by gwydion »

Habe bis jetzt nur mit Verilog gearbeitet. Es muss ohnehin ein frei verfügbares Tool sein, da sich die Anschaffung einer Software für mich nicht lohnt.
Mike D
Posts: 91
Joined: Wed Jun 02, 2004 4:07 pm
Location: Elbe- Weser-Dreieck
Contact:

Post by Mike D »

wie währe es denn, das Schieberegister mit einem geeigneten uP z.B. PIC auszulesen, der dann parallel den JWxxx ansteuert?
mike1
Posts: 21
Joined: Mon Jul 25, 2005 2:21 pm

Post by mike1 »

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€.
supachris
Posts: 124
Joined: Tue Mar 16, 2004 12:30 am
Location: Dresden

Post by supachris »

Is das nich bissl Overkill da nen CPLD zu verwenden? Und wenn dann XILINX, da is die Software völlig kostenlos und frei, JTAG-Programmer kann man selber bauen, oder für 18€ kaufen.
Gruß SupaChris
Post Reply