Forum: Mikrocontroller und Digitale Elektronik Mehr als 4 Tasten bei Gameport-Joystick


von mr.chip (Gast)


Lesenswert?

Hallo

Für ein Projekt möchte ich einen Gameport-Joystick als Eingabegerät
verwenden. Diese Schnittstelle mit ihren jeweils 4 digitalen bzw.
analogen Pins scheint mir mit Abstand am einfachsten zu verwenden.

Nun hat der Gameport ja 4 digitale Pins für 4 Knöpfe, der Joystick den
ich hier vor mir habe hat aber deutlich mehr. (3 4-Seiten-Knöpfe,
Feuerknopf, normale Knöpfe). Wie werden die denn ausgelesen?

Gruss

Michael

von Michael U. (Gast)


Lesenswert?

Hallo,

eigentlich hatte der Gameport 2 Analoge, 2 Digitale Eingänge und Midi
In-/Out, wenn er auf einer Soundkarte wohnte.
Irgendwann reichten die 2 Knopfe nicht und es wurden 4. Leider ging
dann Midi-In/Out nicht mehr so richtig.

Als das auch nicht reichte, machte eben jeder Hersteller, was er
wollte...
2x Analog und 2x Digital stimmt immer. Der Rest? Schieberegister im
Joystick und dann über 2 Pins der Wahl des Herstellers irgendwie in den
Port geschoben. Da kamen dann die Treiber, die nur mit Game X gingen, wo
nur 3 der Knöpfe vollig unsinnige Aktionen auslösten usw. usw. ;)

Also den Joystich aufschrauben, schauen was drin und wo dran ist.

Gruß aus Berlin
Michael

von mr.chip (Gast)


Lesenswert?

Hallo

Ok...soviel also zu meiner Aussage bezüglich Einfachheit ;-)

Zum Glück habe ich einen qualitativ hochwertigen Joystick von Logitech,
mal schauen, ob es eventuell sogar eine Dokumentation dazu gibt o.ä.

Gruss

Michael

von inoffizieller WM-Rahul (Gast)


Lesenswert?

Laut kabelfaq liegen (wie ich schon vor meinem Post vermutete und auch
zu wissen meinte) auf dem Gameport die Anschlüsse für zwei Joysticks:
4x analog + 4x digital
Um die Eingänge unter Windows benutzen zu können, muss man auf die
analogen Eingänge auch ein Signal legen (irgendwelche Widerstände;
ausprobieren). Sonst wird der Joystick gar nicht erst erkannt.

http://www.kabelfaq.de/usb.html

von mr.chip (Gast)


Lesenswert?

Hallo

Ich muss Widerstände auf die Analog-Eingänge legen? Ich dachte bisher,
da wäre ein Widerstand drin, durch denn dann im PC ein Kondensator
gefüllt wird. Wie oft dieser 'überläuft', wird gezählt und daraus der
Widerstand und somit die Schalterstellung errechnet. Na gut, das alles
liesse sich mit dem Multimeter testen, aber zuerst muss ich mir mal den
passenden Sub-D-Stecker auftreiben, sonst gibt das ein riesen
Gefummel...

Gruss

Michael

von Hannes L. (hannes)


Lesenswert?

Der PC-Joystick hat im Analogteil üblicherweise NE555-kompatible Timer
(als Mehrfachchip bzw. bei neueren PCs in einen anderen Chip mit
integriert) verbaut. Diese sind als Monoflop geschaltet, wobei der
Kondensator mit im PC ist, der Widerstand (als Poti) im Joystick. Das
Auslesen erfolgt durch Triggern des Monoflops von der PC-Software und
Ermitteln der Zeit, bis der Ausgang wieder zurück schaltet. Deshalb
haben die PC-Joysticks auch eine (so bescheuerte) Innenschaltung, die
für den Anschluss an den ADC relativ ungeeignet ist.

...

von mr.chip (Gast)


Lesenswert?

> Deshalb
> haben die PC-Joysticks auch eine (so bescheuerte) Innenschaltung,
die
> für den Anschluss an den ADC relativ ungeeignet ist.

Niederohmig? Weil es ja ziemlich fix gehen muss mit dem Laden des
Kondensators.


Habe nun mal meinen Joystick aufgeschraubt. Der Schubregler ist wie
erwartet an einem Poti. Doch für die Steuerachsen konnte ich keine
Potis finden, sondern für jede Achse ein dünnes Blech, das sich mehr
oder weniger auf Leiterbahn-Ringe auf der Platine absenkt, diese aber
nich berührt. Es macht mir fast den Eindruck, als würden hier induktive
Wirkungen gemessen. Könnte das sein?

Gruss

Michael

von Michael U. (Gast)


Lesenswert?

Hallo,

@inoffizieller WM-Rahul:
Du hast mit 4x für 2 Joysticks natürlich völlig recht.
Ich bezog mich auf die Ursprungsversion, 1 Joystick hatte 2 Potis
zwischen Masse und +5V geschaltet, die Schleifer an x und y.
Dazu 2 Taster gegen Masse.
Das dann später beide Josticks sozusagen in einen eingebaut wurden, um
4x Analog und 4x Digital zu haben, ist eine andere Geschichte.
Die Timer waren für Dauerfeuer, soweit vorhanden. Die Potis hatten so
um die 50k und eine angepasste Kennlinie, weil der Wandler im PC
ziemlich nichtlinear ist.

Gruß aus Berlin
Michael

von Winne (Gast)


Lesenswert?

Hallo,
Wie schon weiter oben beschrieben wurde kann so ein Joystik ein nahezu
beliebige Innenleben aufweisen. Wichtig ist nur wie die Signale
aussehen welche ihn über den Port in Richtung verlassen. Hier bist du
an die Methoden gebunden welche der Port vorschreibt.

Bezüglich der Digitaleingänge kannst du 4 Pins nach belieben verwenden
wenn du Dein eigenes Protokoll verwendest.

Die analogen Eingänge basieren auf der schon beschriebenen RC
Zeitmessung hier kommt es an den C im PC zu laden. Ob das logarithmisch
(über R )oder digital (über PWM) geschieht bleibt Dir überlassen. Die
Messmethode innerhalb der am Jostikport angeschlossenen Einheit ist
davon vollkommen unabhängig realisierbar, wenn Du die Signale
entsprechend umformen kannst, wäre sogar eine Phasenwinkelmessung  oder
eine Frequenzmessug möglich.

Nur über die Auflösung von 256 digit =8bit kommst du nur hinaus, wenn
Du Deinen eigenen Treiber schreiben kannst.

Nur noch ein kurzes Beispiel mit den Digitaleingängen kannst Du sogar
eine art Onewaydatenbus realisieren, wenn du über eine Leitung taktest
und über die Andere die Werte hineinschiebst.

Ich muss noch mal nachsehen ob man die Analogeingänge auch als Ausgänge
mißbrauchen kann, indem man per Treiber den Entladetransistor des Ne555
direkt anweisst loszulassen oder eben nicht.

von Winne (Gast)


Lesenswert?

edit:
Wichtig ist nur wie die Signale
aussehen welche ihn über den Port in Richtung PC verlassen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.