Next: Wichtige Datenstrukturen
Up: Gerätetreiber - Datenstrukturen und
Previous: Gerätetreiber - Datenstrukturen und
Kennungen für das Versionskontroll-System:
$Id: pendulum.h,v 1.114 1996/04/23 16:34:23 heuler$
$Id: hardware.h,v 1.2 1996/03/16 21:46:42 heuler$
$Id: ioctl.h,v 1.122 1996/03/16 21:47:23 heuler$
Alle Dateien für den Gerätetreiber befinden sich in dem Verzeichnis
module. Die Definitionen, die sowohl vom Gerätetreiber, als auch
vom Programm benötigt werden, sind in der Datei ioctl.h
enthalten. Für den direkten Hardwarezugriff benötigte Definitionen
sind in der Datei hardware.h enthalten. Wohingegen
pendulum.h allgemeine Definitionen für Gerätetreiber enthält.
Über die ASCII-Schnittstelle des Gerätetreibers (/dev/pendulum)
können direkt Befehle an das Pendelsystem geschickt
werden. Die möglichen Befehle sind im folgenden mit aufgeführt.
Beispiele:
echo calibrate > /dev/pendulum
echo interrupt=2000 > /dev/pendulum
- #define PENDEL_NAME ''pendulum''
- Name des Pendel Gerätetreibers
- #define PENDULUM ''pendulum interface''
- Name der Pendel Hardware
- #define IOVERSION 0x105
- Version der Schnittstelle zwischen
Treiber und Programm; wird sowohl vom Programm, als auch vom Treiber
verwendet, um sicherzustellen, daß die binäre Schnittstelle kompatibel
ist
- #define TIMEOUT 30
- legt die maximale Zeitspanne in Sekunden
für Befehle fest
- #define VCOUNTER 10
- gibt die Anzahl Interrupts für die
Berechnung der Geschwindigkeit an
Über die Ioctl() Schnittstelle werden folgende Befehle
definiert, die an den Gerätetreiber geschickt werden können.
- #define CMD_OFF
- fährt das Pendel herunter;
entspricht
dem Befehl: down
- #define CMD_CALIB
- calibriert das Pendel in der
Nullposition;
entspricht dem Befehl: calibrate
- #define CMD_UP
- schwingt das Pendel hoch;
entspricht dem Befehl:
up=parameter
- #define CMD_MODEINIT
- setzt den Motormodus auf
MODEINIT;
entspricht dem Befehl: modeinit
- #define CMD_MODERESET
- setzt den Motormodus auf
MODERESET;
entspricht dem Befehl: modereset
- #define CMD_MODECONTROL
- setzt den Motormodus auf
MODECONTROL;
entspricht dem Befehl: modecontrol
- #define CMD_ENDON
- schaltet die Endabschaltung
an;
entspricht dem Befehl: endon
- #define CMD_ENDOFF
- schaltet die Endabschaltung
aus;
entspricht dem Befehl: endoff
- #define CMD_PENCONTROL
- schaltet die Steuerung
an;
entspricht dem Befehl: control
- #define CMD_MOVE
- bewegt den Pendelarm auf die angebene
Position;
entspricht dem Befehl: move=parameter
- #define CMD_DIRECT
- gibt einen direkten Impuls auf den
Motor;
entspricht dem Befehl: direct=parameter
- #define CMD_INTERRUPT
- setzt den Takt für den
Interrupt;
entspricht dem Befehl: interrupt=parameter
- #define CMD_DELAY
- wartet angegebene Zeit lang;
entspricht
dem Befehl: delay=parameter
- #define CMD_CONTROL
- legt Steuerbefehl für nächsten
Interrupt ab
- #define CMD_STARTCTRL
- startet die Steuerung durch den Interrupt
- #define CMD_STOPCTRL
- stopt die Steuerung durch den Interrupt
Für die Motorsteuerung sind folgende Modi definiert, die über die
Funktion
set_hctl_mode gesetzt werden können.
- #define MODE_RESET
- setzt den Motor komplett zurück und
schaltet die Steuerung aus
- #define MODE_INIT
- schaltet den Motor in den direkten Modus
- #define MODE_CONTROL
- schaltet den Motor in den Steuermodus
Über die Funktion get_input() können die verschiedenen Zustände
des Pendelsystems abgefragt werden. Die Zustände sind dabei bitweise
definiert und können mit folgenden Definitionen überprüft werden.
- #define IN_ENDAN
- gibt an, ob das Steuergerät eingeschaltet ist
- #define IN_NULLA
- gibt an, ob der Antriebsarm in der Nullposition
liegt; ist zur Kalibration nötig
- #define IN_NULLP
- gibt an, ob das Pendel in der Nullposition
liegt; ist zur Kalibration nötig
- #define IN_LIML
- gibt an, ob der Antriebsarm am linken Rand, also
kurz vor dem linken Anschlag ist
- #define IN_LIMR
- gibt an, ob der Antriebsarm am rechten Rand,
also kurz vor dem rechten Anschlag ist
- #define IN_FREI
- gibt an, ob die Endstufe der Motorsteuerung
freigeschaltet ist
Next: Wichtige Datenstrukturen
Up: Gerätetreiber - Datenstrukturen und
Previous: Gerätetreiber - Datenstrukturen und
Marius Heuler
Tue Jan 7 12:11:50 MET 1997