Userport
Aus C64-Wiki
Inhaltsverzeichnis |
[Bearbeiten] Beschreibung
Der Userport ist eine Schnittstelle, die der Anwender (=User) für eigene Zwecke verwenden kann. Er bietet ähnlich dem LPT-/Druckerport bei PCs diverse frei programmierbare Leitungen an. So lassen sich damit selbst gebastelte Steuerungen (z.B. für Spielzeug-Eisenbahn, Hausüberwachungssysteme u.ä.) verwirklichen, die externe Geräte ein- und ausschalten können (Ausgangsmodus). Gleichzeitig können aber auch Daten von externen Geräten oder Schaltungen in den C64 eingelesen und verarbeitet werden (Eingangsmodus). Der User-Port hat dazu 8 parallele Datenleitungen, die durch geeignete Softwarebefehle für die jeweilig gewünschte Datenrichtung programmiert werden können. Durch weitere Sonderleitungen, wie zum Beispiel die Handshake-Leitung, kann das Austauschen von Daten (z.B. bei Druckerinterfaces) automatisiert werden. Der Userport Port befindet sich auf der Rückseite des C64 und ist identisch mit dem des C128, nicht jedoch mit dem des VC-20 und des Plus/4.
Für den Userport gibt es auch verschiedene Steckmodule, um ihn als RS-232-Schnittstelle oder Centronics-Schnittstelle einzusetzen. Weiterhin gibt es Modems, Relaiskarten, EPROM-Programmiergeräte und zahlreiche Sonderanwendungen, die an den Userport angeschlossen werden. Eine häufige Verwendung ist der Anschluß eines Resettasters.
Im Gegensatz zum Expansionsport stehen Daten- und Adressbus der CPU MOS 6510 am Userport nicht zur Verfügung. Das Einblenden oder automatische Starten von Programmen nur per Modul am Userport ist also nicht möglich. Um den Userport zu benutzen, muss immer manuell das zur Hardware passende Programm z.B. über das Diskettenlaufwerk geladen werden.
Intern führen die meisten Anschlüsse des Userports an den zweiten der beiden CIA-Bausteine des C64. Beim Anschluss externer Schaltungen (im Ausgangs-Modus) sollte man unbedingt die Belastbarkeit der 8 Daten-Leitungen von jeweils maximal 100 mA beachten. Es empfiehlt sich, zum Schutz des CIA2-Bausteins keine Relais direkt anzuschließen, sondern Transistorstufen oder Optokoppler zwischen zu schalten. Ein zerstörter CIA2 Baustein lässt sich nur mit einigem Kosten- und Zeitaufwand reparieren.
[Bearbeiten] Verwendung als serielle RS-232-Schnittstelle
Der Userport ist als RS-232-Schnittstelle verwendbar. Allerdings müssen die Signal-Pegel in diesem Fall unbedingt extern invertiert und zugleich vom TTL-Standard (0V / +5V) auf den RS232-Standard (+/-12V) gewandelt werden. Bei direktem Anschluss von RS-232-Pegeln an den Port droht Zerstörung des CIA-Chips. Die genaue Belegung für RS-232 ist im nächsten Abschnitt erklärt.
[Bearbeiten] Anschlussbelegung
Der Userport ist als 24-poliger Platinenstecker ausgeführt, wobei sich je 12 Pole auf der Ober- und Unterseite der Platine befinden. Die Pole auf der Oberseite sind von 1-12 durchnummeriert (beim Blick von außen auf den Port: von links beginnend), die auf der Unterseite tragen die Buchstaben A-N, wobei die Buchstaben G und I wegen der Verwechslungsgefahr mit den Ziffern 6 und 1 nicht verwendet werden. Zwischen den Pins 1 und 2 und zwischen 10 und 11 hat die Platine Schlitze, die mittels zweier Stege auf der Steckerseite gegen verdrehtes Einstecken schützen. Vorsicht: Nicht alle angebotenen Stecker bieten diesen Verpolungsschutz, die blauen von Conrad z.B. nicht.
| Pin | Signal | Bemerkung | Pin | Signal | Bemerkung | |
|---|---|---|---|---|---|---|
| Oberseite | Unterseite | |||||
| 1 | GND | Masse | A | GND | Masse | |
| 2 | + 5V | max. 100 mA | B | FLAG 2 | Flag 2 | |
| 3 | RESET | Reset | C | PB 0 | Bit 0 (CIA 2) | |
| 4 | CNT 1 | Zähler 1 (von CIA 1) | D | PB 1 | Bit 1 | |
| 5 | SP 1 | Serieller Port 1 | E | PB 2 | Bit 2 | |
| 6 | CNT 2 | Zähler 2 (von CIA 2) | F | PB 3 | Bit 3 | |
| 7 | SP 2 | Serieller Port 2 | H | PB 4 | Bit 4 | |
| 8 | PC2 | Port Control | J | PB 5 | Bit 5 | |
| 9 | SER. ATN IN | Serial Attention In | K | PB 6 | Bit 6 | |
| 10 | 9V AC | max. 100 mA | L | PB 7 | Bit 7 | |
| 11 | 9V AC | max. 100 mA | M | PA 2 | Bit 2 (CIA 2) | |
| 12 | GND | Masse | N | GND | Masse | |
Ein Strich über dem Signalnamen bedeutet, dass das Signal Aktiv-Low ist.
Hinweise:
Beim C64C und "Aldi"-C64 fehlt die 9V Wechselspannung.
Beim SX64 liegen die Pins der 9V Wechselspannung auf GND.
[Bearbeiten] Signalbeschreibung
GND: GROUND, Masse
Die Signalmasse des C64 bzw. 0 Volt der Spannung. GND ist an allen vier Ecken des Userportsteckers verfügbar.
+ 5V: 5 Volt
5 Volt Gleichspannung des C64.
9V AC: 9 Volt
9 Volt Wechselspannung. Beim C64C und "Aldi"-C64 fehlt die 9V Wechselspannung. Beim SX64 liegen die Pins der 9V Wechselspannung auf GND.
/RESET: Reset
Beim Einschalten zieht der Rechner diesen Pol auf Low (Masse), was zum Zurücksetzen angeschlossener Geräte dienen kann. /RESET ist auch als Eingang nutzbar: Legt man diesen Pol von außen auf Low, führt der C64 einen Reset (Kaltstart) aus. Das /RESET-Signal wirkt auch auf die am Seriellen Bus und am Expansionsport angeschlossenen Peripherie-Geräte.
CNT 1: Count
Zählereingang des seriellen Ports vom CIA 1.
SP 1: Serial Port
Schneller Serieller Port vom CIA 1 (nicht zu verwechseln mit der seriellen Schnittstelle des C64!)
CNT 2: Count
Zählereingang des seriellen Ports vom CIA 2.
SP 2: Serial Port
Serieller Port vom CIA 2
/PC2:
Handshake-Leitung vom CIA 2.
SER. ATN IN: Serial Attention In
Dieser Anschluß ist mit der ATN-Leitung (Serial Attention In/Out) verbunden. Mehr dazu siehe serielle Schnittstelle.
/FLAG 2: Flag 2
Dieser Eingang reagiert auf negative Flanken und kann als allgemeiner Interrupteingang benutzt werden. Eine negative Flanke setzt das FLAG-Interruptbit. Ist das zugehörige Maskenbit gesetzt (FLAG-Interrupt zugelassen), wird ein Interrupt (IRQ) ausgelöst. Deswegen wird bei der Verwendung des Userports als RS-232-Schnittstelle hier und an PB0 die RXD-Leitung angeschlossen.
PB 0 .. PB 7: Port B des CIA 2, Bit 0 bis 7
Der Port B des CIA 2 Chips ist frei verfügbar. Jedes der 8 Signale kann entweder als Eingabe- oder Ausgabeleitung definiert werden. Bei der Verwendung als RS-232 gilt hier: PB0 = RXD, PB1 = RTS, PB2 = DTR, PB3 = RING, PB4 = DCD, PB5 unbelegt, PB6 = CTS, PB7 = DSR. RXD muss außerdem auch noch mit /FLAG2 verbunden werden.
PA 2: Port A des CIA 2, Bit 2
Diese Leitung ist wie PB 0 bis PB 7 einstellbar, und ist bei der Verwendung als RS-232 der TXD Ausgang.
[Bearbeiten] Programmierung
Der Port B des CIA 2 umfasst 8-Bit. Die Datenrichtung dieser acht Port-Leitungen wird durch das DATA DIRECTION REGISTER BYTE (Datenrichtungs-Registerbyte, DDRB) bestimmt. Dieses liegt bei Adresse 56579 ($DD03). Ist ein Bit im DDRB gesetzt, dann ist das entsprechende Port-Signal eine Ausgabeleitung. Entsprechend wird durch ein gelöschtes Bit, also eine "0", eine Eingabeleitung definiert. Beim Einschalten des C64 sind alle Leitungen Sicherheitshalber als Eingang geschaltet; man darf sie nur auf Ausgang schalten, wenn sichergestellt ist, das kein Baustein der extern angeschlossenen Schaltung versucht, das Signal von außen auf +5V oder auf Masse zu ziehen, da sonst der CIA-Chip durchbrennen kann.
Beispiel 1: ein externes Gerät, das an PB0 (Bit 0 des CIA2-Ports) angeschlossen ist, soll eingeschaltet werden. Das Port-Register-Byte (PRB) darf erst "nach" der Wahl der Datenrichtung gesetzt oder gelöscht werden. Es enthält die eigentliche Datenübertragung.
POKE 56579,1: REM DDRB DATENRICHTUNG für Bit 0 auf AUSGANG (=1) schalten
BINÄR "0000 0001"
POKE 56577,1: REM PRB DATENÜBERTRAGUNG für Bit 0 (hier auf 1 = "ein")
BINÄR "0000 0001"
Beispiel 2: sieben externe Geräte, die an PB0 bis PB6 angeschlossen sind, sollen ausgeschaltet werden.
POKE 56579,127: REM die sieben unteren Bits auf AUSGANG schalten
BINÄR "0111 1111"
POKE 56577,0: REM die sieben unteren Bits auf NULL (=aus) setzen
BINÄR "0000 0000" ("1000 0000" geht auch für diesen Fall
Will man die einmal gewählte Datenrichtung der einzelnen Bits in 56579 immer beibehalten, genügt es, das Register 56577 einmal zu beschicken. Der C64 merkt sich die DATENRICHTUNG der einzelnen Bits bis auf Widerruf (oder RESET).
Bei der Verwendung als RS-232 (z.B. mit dem Befehl OPEN 2,2,2) werden die Signale automatisch passend auf Ein- und Ausgang geschaltet.
[Bearbeiten] Links
| Wikipedia: Userport |
