SYNOPSIS
loadrt hal_parport cfg="port_addr [type] [ [port_addr [type] .. .]"
BESCHREIBUNG
Die Komponente hal_parport ist eine Echtzeitkomponente, die Verbindungen von HAL über halpins zu den physikalischen Pins einer oder mehrerer paralleler Schnittstellen herstellt. Sie bietet eine Lese- und Schreibfunktion zum Senden und Empfangen von Daten an die angeschlossene(n) parallele(n) Schnittstelle(n).
Die hal_parport Komponente unterstützt bis zu 8 physikalische parallele Ports.
OPTIONEN
- cfg="port_addr [type] [[port_addr [type] …]"
-
Die cfg-Zeichenkette teilt hal_parport die Adresse(n) der parallelen Schnittstelle(n) mit und gibt an, ob die Schnittstelle(n) als Eingabe- oder Ausgabe-Schnittstelle(n) verwendet wird/werden. Bis zu acht parallele Ports werden von der Komponente unterstützt.
Der port_addr Parameter des Konfigurationsstrings kann entweder die physikalische Basisadresse einer parallelen Schnittstelle sein oder als die erkannte parallele Schnittstelle über den Linux parport_pc-Treiber angegeben werden. In diesem Fall ist eine port_addr von 0 der erste auf dem System erkannte parallele Anschluss, 1 der nächste und so weiter.
Der type (Typ) Parameter des Konfigurationsstrings bestimmt, wie die I/O-Bits des Ports verwendet werden. Es gibt vier mögliche Optionen, und wenn keine angegeben wird, ist der Standardwert out.
- in
-
Setzt die 8 Bits des Datenports auf Eingang. In diesem Modus hat der Parallelport insgesamt 13 Eingangs- und 4 Ausgangs-Pins.
- out
-
Setzt die 8 Bits des Datenports auf Ausgabe. In diesem Modus hat der Parallelport insgesamt 5 Eingangs- und 12 Ausgangspins.
- epp
-
Diese Option entspricht der Einstellung out, kann aber dazu führen, dass der Computer die elektrischen Eigenschaften des Anschlusses verändert, siehe USAGE/BENUTZUNG unten.
- x
-
Mit dieser Option können Anschlüsse mit offenen Collectors an den Steuergruppenpins als Eingänge konfiguriert werden, was zu 8 Ausgangsstiften und 9 Eingangsstiften führt, siehe USAGE unten.
PINS
Die von der Komponente hal_parport erzeugten Pins hängen davon ab, wie sie in der übergebenen cfg="" String konfiguriert ist, siehe OPTIONEN.
- parport.p.pin-n-out (bit)
-
Treibt einen physischen Ausgangspin an.
- parport.p.pin-n-in (bit)
-
Folgt einen physischen Eingangs-Pin.
- parport.p.pin-n-in-not (bit)
-
Folgt einem physischen Eingangs-Pin, aber invertiert.
Für jeden Pin ist p die Anschlussnummer und n die physische Pin-Nummer im 25-poligen D-Shell-Stecker.
Für jeden physischen Ausgangspin legt der Treiber einen einzelnen HAL-Pin an, z. B.: parport.0.pin-14-out.
Für jeden physischen Eingangspin erstellt der Treiber zwei HAL-Pins, zum Beispiel: parport.0.pin-12-in und parport.0.pin-12-in-not.
Der HAL-Pin -in ist TRUE, wenn der physikalische Pin high ist, und FALSE, wenn der physikalische Pin low ist. Der -in-not-HAL-Pin ist invertiert und ist FALSE, wenn der physische Pin high ist.
Im Folgenden werden die Eingangs- und Ausgangsstifte nach der in der Zeichenkette cfg="" verwendeten Typeinstellung aufgeführt.
in: Pins 2,3,4,5,6,7,8,9,10,11,12,13,15 are input pins and pins 1,14,16 and 17 are output pins.
out/epp: Pins 10,11,12,13 and 15 are input pins and pins 1,2,3,4,5,6,7,8,9,14,16 and 17 are output pins.
x: Pins 1,10,11,12,13,14,15,16 and 17 are input pins and pins 2,3,4,5,6,7,8,9 are output pins. (See USAGE section.)
PARAMETER
- parport.p.pin-<n>-out-invert (bit)
-
Invertiert einen Ausgangspin.
- parport.p.pin-<n>-out-reset (bit)
-
(nur für Out-Pins) TRUE, wenn dieser Pin beim Ausführen der Funktion .reset zurückgesetzt werden soll.
- parport.p.reset-time (u32)
-
Die Zeit (in Nanosekunden) zwischen dem Setzen eines Pins durch Schreiben und dem Zurücksetzen durch die Reset-Funktion, wenn diese aktiviert ist.
FUNKTIONEN
- parport.p.read (funct)
-
Liest die physikalischen Eingangspins von Port <portnum> und aktualisiert die HAL -in und -in-not Pins.
- parport.read-all (funct)
-
Liest die physischen Eingangspins aller Ports und aktualisiert die HAL -in und -in-not Pins.
- parport.p.write (funct)
-
Liest HAL-out-Pins von Port p und aktualisiert die physischen Ausgangspins dieses Ports.
- parport.write-all (funct)
-
Liest HAL-Out-Pins aller Ports und aktualisiert alle physischen Ausgangspins.
- parport.p.reset (funct)
-
Wartet, bis reset-time seit dem zugehörigen Schreibvorgang verstrichen ist, und setzt dann die Pins auf die durch -out-reset und -out-invert Einstellungen angegebenen Werte zurück. Wenn -out-reset TRUE ist, dann setzt die Reset-Funktion den Pin auf den Wert von -out-invert. Dies kann in Verbindung mit der doublefreq-Funktion von stepgen verwendet werden, um einen Schritt pro Periode zu erzeugen. Der stepgen-Schrittbereich für diesen Pin muss auf 0 gesetzt werden, um doublefreq zu aktivieren.
VERWENDUNG
Die Komponente hal_parport ist ein Treiber für den traditionellen PC-Parallelport. Die Schnittstelle hat insgesamt 25 physikalische Pins, von denen 17 für Signale verwendet werden. Die ursprüngliche parallele Schnittstelle unterteilte diese Pins in drei Gruppen: Daten, Steuerung und Status. Die Datengruppe besteht aus 8 Ausgangspins, die Steuergruppe aus 4 Ausgangspins und die Statusgruppe aus 5 Eingangspins.
In den frühen 1990er Jahren wurde die bidirektionale parallele Schnittstelle eingeführt, die es ermöglicht, die Datengruppe für die Ausgabe oder Eingabe zu verwenden. Der HAL-Treiber unterstützt den bidirektionalen Anschluss und ermöglicht es dem Benutzer, die Datengruppe entweder als Eingang oder als Ausgang einzustellen. Ist ein Port als Ausgang konfiguriert, bietet er insgesamt 12 Ausgänge und 5 Eingänge. Wenn er als "in" konfiguriert ist, bietet er 4 Ausgänge und 13 Eingänge.
Bei einigen parallelen Anschlüssen sind die Pins der Steuergruppe offene Kollektoren, die auch durch ein externes Gate auf Low geschaltet werden können. Auf einer Platine mit Open-Collector-Steuerpins stehen, wenn sie als "x" konfiguriert ist, 8 Ausgänge und 9 Eingänge zur Verfügung.
Bei einigen parallelen Anschlüssen verfügt die Steuergruppe über Push-Pull-Treiber und kann nicht als Eingang verwendet werden.
- Hinweis: HAL und offene Kollektoren
-
HAL kann nicht automatisch feststellen, ob die bidirektionalen x-Modus-Pins tatsächlich offene Kollektoren (OC) sind. Wenn dies nicht der Fall ist, können sie nicht als Eingänge verwendet werden, und der Versuch, sie von einer externen Quelle auf LOW zu setzen, kann die Hardware beschädigen.
Um festzustellen, ob Ihr Port open collector Pins hat, laden Sie hal_parport im x Modus. Wenn kein Gerät angeschlossen ist, sollte HAL den Pin als TRUE lesen. Legen Sie dann einen 470-Ohm-Widerstand von einem der Steuerpins nach GND. Wenn die resultierende Spannung am Steuerpin nahe bei 0 V liegt und HAL den Pin nun als FALSE liest, dann haben Sie einen OC-Port. Wenn die resultierende Spannung weit von 0V entfernt ist oder HAL den Pin nicht als FALSE liest, dann kann Ihr Port nicht im x-Modus verwendet werden.
Die externe Hardware, welche die Steuerpins ansteuert, sollte ebenfalls Open-Collector-Gates verwenden (z. B. 74LS05).
Bei einigen Computern können die BIOS-Einstellungen beeinflussen, ob der x-Modus verwendet werden kann. Am ehesten funktioniert der SPP-Modus.
Andere Kombinationen werden nicht unterstützt, und ein Anschluss kann nach der Installation des Treibers nicht mehr von Eingang auf Ausgang umgestellt werden.
Der parport-Treiber kann bis zu 8 Ports steuern (definiert durch MAX_PORTS in hal_parport.c). Die Ports werden bei Null beginnend nummeriert.
- Laden der hal_parport Komponente
-
Der hal_parport Treiber ist eine Echtzeitkomponente und muss daher mit loadrt in den Echtzeit-Thread geladen werden. Der Konfigurationsstring beschreibt die zu verwendenden parallelen Ports und (optional) deren Typen. Wenn der Konfigurationsstring nicht mindestens einen Port beschreibt, ist dies ein Fehler.
loadrt hal_parport cfg="port [type] [port [type] …]" - Angabe des Ports
-
Zahlen unter 16 beziehen sich auf parallele Ports, die vom System erkannt werden. Dies ist die einfachste Art, den hal_parport-Treiber zu konfigurieren, und arbeitet mit dem Linux-Treiber parport_pc zusammen, falls dieser geladen ist. Ein Port von 0 ist der erste vom System erkannte parallele Port, 1 ist der nächste, und so weiter.
- Grundkonfiguration
-
Dies wird den ersten parallelen Port verwenden, den Linux erkennt:
loadrt hal_parport cfg="0" - Verwenden der Portadresse
-
Stattdessen kann die Portadresse mit der hexadezimalen Schreibweise 0x und dann die Adresse angegeben werden.+ loadrt hal_parport cfg="0x378"
- Angeben eines Porttyps
-
Für jede parallele Schnittstelle, die vom hal_parport Treiber behandelt wird, kann optional ein Typ angegeben werden. Der Typ ist einer von in, out, epp oder x.
Wird der Typ nicht angegeben, ist der Standardwert out.
Ein epp-Typ ist derselbe wie out, aber der hal_parport-Treiber fordert den Anschluss auf, in den EPP-Modus zu wechseln. Der hal_parport-Treiber verwendet nicht das EPP-Busprotokoll, aber auf einigen Systemen ändert der EPP-Modus die elektrischen Eigenschaften des Anschlusses in einer Weise, die einige marginale Hardware besser funktionieren lassen kann. Es ist bekannt, dass die Ladungspumpe des Gecko G540 dies bei einigen parallelen Anschlüssen erfordert.
Siehe Anmerkung oben zu Modus x.
- Beispiel mit zwei parallelen Anschlüssen
-
Dadurch werden zwei vom System erkannte parallele Schnittstellen aktiviert, die erste im Ausgabemodus und die zweite im Eingabemodus:
loadrt hal_parport cfg="0 out 1 in" - Funktionen mit einem Port
-
Sie müssen LinuxCNC auch anweisen, die Lese- und Schreibfunktionen für alle angeschlossenen Ports auszuführen.
addf parport.read-all base-thread
addf parport.write-all base-thread - Funktionen mehrerer Anschlüsse
-
Sie können LinuxCNC anweisen, die Lese- und Schreibfunktionen für alle angeschlossenen Ports auszuführen.
addf parport.0.read base-thread
addf parport.0.write base-thread
Die einzelnen Funktionen sind für Situationen vorgesehen, in denen ein Anschluss in einem sehr schnellen Thread aktualisiert werden muss, während andere Anschlüsse in einem langsameren Thread aktualisiert werden können, um CPU-Zeit zu sparen. Es ist wahrscheinlich keine gute Idee, gleichzeitig eine -all Funktion und eine individuelle Funktion zu verwenden.
SIEHE AUCH
Parallel-Port-Treiber (Hardware-Treiber Abschnitt der LinuxCNC Dockumentation), PCI Parallel Port (Hardware Beispiele Abschnitt der LinuxCNC Dockumentation)
AUTOR
Diese Manpage wurde von Joe Hildreth als Teil des LinuxCNC-Projekts geschrieben. Die meisten dieser Informationen wurden aus der parallel-port docs in der Hardware-Treiber-Abschnitt der Dokumentation befindet sich genommen. Nach unserem besten Wissen wurde diese Dokumentation von Sebastian Kuzminsky und Chris Radek geschrieben.