Der Gameport
Schon früher beim C64, Amiga
oder Atari hatte man die Möglichkeit einen Joystick anzuschließen. Diese
digitalen Joysticks bestehen aus vier Mikroschaltern, die um 90° versetzt um die
Steuerachse angeordnet sind. Bewegt man nun den Steuerknüppel, so wird jeweils
der entgegengesetzt zur Bewegungsrichtung liegende Schalter betätigt. Mit dieser
Methode lässt sich jedoch nur die Bewegungsrichtung feststellen. Eine
betragsmäßige Regulierung der Bewegung ist nicht
möglich.
Viel mehr Möglichkeiten bietet hier
der Joystick des PC´s. Da er in Analogtechnik ausgeführt ist, kann man hier
zusätzlich zur Bewegungsrichtung auch die Bewegungsintensität erfassen. In einem
solchen Joystick befinden sich zwei um 90° versetzte veränderbare Widerstände
(Potentiometer). Bewegt man nun den Joystick, so wird ihr Widerstandswert
verändert. Dieser Wert wird über einen A/D - Wandler
eingelesen.
Funktionsweise:

In Bild 1 ist prinzipiell so ein Analog-Digital Wandler
dargestellt. Da an einen Gameport zwei Joysticks angeschlossen werden können,
befinden sich vier solcher Wandler hinter dem Gameport. Gestartet wird eine
Wandlung, sobald das Reset-Signal kurz auf Masse gezogen wird. Dadurch wird der
Kondensator, der beim Einschalten des PC´s geladen wurden, schnell entladen.
Durch den Schutzwiderstand R wird der Entladestrom begrenzt. Danach wird der
Kondensator langsam über den Poti und R wieder aufgeladen. Auch hier dient R als
Schutzwiderstand, falls am Poti 0 Ohm eingestellt werden. Nun kann der
Zusammenhang zwischen dem Widerstandswert und der Ladezeit ausgewertet werden.
Am Eingang des Komparators wird die Kondensatorspannung dauernd mit einer
konstanten Spannung verglichen. Liegt die Kondensatorspannung unterhalb, so ist
am Ausgang low-Pegel, andernfalls high-Pegel. Die Länge des Ausgangssignals
hängt also wiederum vom Widerstandswert ab. Wenn man nun diese Signaldauer misst
kann daraus der Widerstandswert mit folgender Gleichung errechnet
werden:
R= (gemessene Zeit - 24.2µs) / 0.011µs
Da man ja den
Gesamtwiderstand des Poti´s kennt, kann aus Verhältnis des errechneten
Widerstands und des Gesamtwiderstandes des Poti´s die Stellung des
'Steuerknüppels' ermittelt werden. Außer dem Steuerknüppel sind am Joystick noch
sog. 'Feuerknöpfe' vorhanden, die vom PC ebenfalls eingelesen werden
können.
In der folgenden Abbildung ist der Steckverbinder des Gameports
dargestellt.
|
Pin Nummer |
Beschreibung |
|
1 |
Versorgungsspannung +5 Volt |
|
2 |
Taste A1 |
|
3 |
Potentiometer A X |
|
4 |
GND |
|
5 |
GND |
|
6 |
Potentiometer A Y |
|
7 |
Taste A2 |
|
8 |
Versorgungsspannung +5 Volt |
|
9 |
Versorgungsspannung +5 Volt |
|
10 |
Taste B1 |
|
11 |
Potentiometer B X |
|
12 |
GND |
|
13 |
Potentiometer B Y |
|
14 |
Taste B2 |
|
15 |
Versorgungsspannung +5
Volt |
Tabelle 1 :
Pinbelegung
Wie aus Tabelle 1 zu erkennen ist, sind die Anschlüsse für
beide Joysticks auf einem Stecker untergebracht. Dabei unterscheidet A und B die
beiden Joysticks. Diese Art und Weise ist zwar sehr unpraktisch, spart jedoch am
PC Platz und somit Geld. Erwähnenswert wäre noch, daß der Gameport die einzige
Schnittstelle ist, die dem Endgerät die Spannungsversorgung zur Verfügung stellt
( und das gleich mehrfach ). Zusätzlich sind auch noch vier analoge und vier
digital Eingänge vorhanden. Dadurch ist es möglich eigene kleine Endgeräte
anzuschließen, und auch z.B. für (ungenaue) Meßzwecke die A/D - Wandler Eingänge
zu benutzen.
Die beiden Eingänge für die Taster werden auf der Gamekarte
(meist Soundkarte) mit einem Widerstand von 10 kOhm an + 5 Volt gelegt. Sie
haben also high-Pegel. Wird nun einer der Taster gedrückt, so wird das Signal
kurz auf Masse gezogen (low-side-switch). Die vier Tasten werden über einen
einfachen Port eingelesen - sie beeinflussen also keinen Interrupt.
An
den analogen Eingängen sind die Schleifer der Poti´s angeschlossen. Im Joystick
sind die Poti´s an einem Ende mit +5 Volt verbunden. Der Gesamtwiderstand eines
Poti´s beträgt 100k Ohm. Der A/D Wandler ist natülich nicht wie oben beschrieben
diskret aufgebaut, sondern in einem IC integriert. Dieser IC liefert für jeden
Analogeingang ein Bit. Zusammen mit den vier Bits der Taster wird ein Byte
gebildet, welches über die Adresse der Joystickkarte eingelesen und
weiterverarbeitet werden kann.