Funktionen: init() |
Systemfunktionen: |
Beschreibung Nach oben
Das Modul stports.c2 ist ein Treiber für die erweiterten Ausgänge der C-Control-II-Station.
Dazu zählen die 8 LEDs, die 2 Relais, die 5 Ports PO.0 bis .4 und die
LCD-Beleuchtung.
Die Routinen sind in ASM geschrieben.
stports.c2 benötigt entweder OSOPT V3.0 hier sind die nötigen ASM-Routinen
bereits integriert, oder bei älteren Betriebssystemen den Systemtreiber sys0001.hex,
welcher
mit einem Download-Tool in das Segment 3 geladen werden muß.
Dieser Systemtreiber wird ebenfalls von lcdext.c2 und rblcd.c2 benötigt.
Durch den ASM-Treiber werden hier keinerlei
Captures mehr benötigt !
Deshalb muß in Verbindung mit stports.c2 das Modul lcdext.c2 ab V2.2
benutzt werden,
damit es keine Ressourcenkonflikte geben kann.
Das Modul stports.c2 ist außerdem schneller als das Original-Modul station_io.c2
.
Wichtiger Hinweis bei der Umstelleung von Projekten auf stports.c2
und lcdext.c2:
Die Module station_io.c2 und station_lcd.c2 sollten aus dem
Projekt entfernt (deaktiviert)
werden. Auch sollte die dazugehörige Hex-Datei nicht mehr geladen werden.
Es kann ansonsten zu Problemen beim Schalten der erweiterten Station-Ports
kommen.
Einfügen als Systemmodul
Nach oben
Die Datei stports.c2 in das Verzeichnis .\CControl2\Lib
kopieren und in der Datei modules.txt
die Zeile stports.c2 unterhalb von ports.c2 einfügen.
Ein zusätzliches Ausrufezeichen unmittelbar nach einem Modulnamen in modules.txt
bestimmt,
daß das Modul in jedem neuen Projekt von Anfang an aktiviert wird.
Außerdem muß, wenn eine Betriebssystem-Version vor OSOPT V3.0 genutzt wird,
die Datei sys0001.hex mit den nötigen Systemroutinen mit
dem Downloadtool
in die C-Control II geladen werden.
Der Systemtreiber sys0001.hex belegt den Adressbereich 0xD540 bis 0xD779
im Segment 3 des Flash. (569 Byte)
Ab OSOPT V3.0 ist sys0001.hex im Betriebssytem implementiert.
Konstanten Nach oben
Einsprungadressen des ASM-Treibers:
// Einsprungadresse ASM-Routinen
// OSOPT V3.0:
const Segment = 0x0000;
const _SETALL = 0xD5DC;
const _SETPORT = 0xD5F2;
const _TOGPORT = 0xD61C;
const _PULSE = 0xD634;
const _GETPORT = 0xD694;
// sys0001.hex:
const Segment = 0x0300;
const _SETALL = 0xD676;
const _SETPORT = 0xD68C;
const _TOGPORT = 0xD6B6;
const _PULSE = 0xD6CE;
const _GETPORT = 0xD72E;
Bei Benutzung von OSOPT V3.0 werden die die oberen Einsprungadressen
benötigt. sys0001.hex muß dann nichtmehr geladen werden, da die
nötigen Routinen
in OSOPT V3.0 bereits implementiert sind.
Wenn eine ältere OS-Version benutzt wird, müssen die unteren Einsprungadressen
benutzt und sys0001.hex in Segment 3 geladen werden.
Durch Auskommentieren der Konstantengruppen kann zwischen sys0001.hex und
den Routinen von OSOPT V3.0 "umgeschaltet" werden.
Funktionen:
init() Nach oben
function init()
Die Funktion init() initialisiert die Ports und setzt deren Pegel
auf low(=aus).
allon() Nach oben
function allon()
Mit allon() wird der Pegel aller Ports auf high(=ein) gesetzt.
alloff()
Nach oben
function alloff()
Mit alloff() wird der Pegel aller Ports auf low(=aus) gesetzt.
setall()
Nach oben
function setall(int state)
Mit setall() werden alle Ports entsprechend dem Bitmuster state gesetzt
state | Bitmuster der Schaltzustände: B0 bis B7 = LED1 bis LED8 B8 und B9 = Relais 1 & 2 Bit10 bis Bit14 = Ports PO.0 bis PO.4 Bit15 = LCD-Beleuchtung |
getall()
Nach oben
function getall() returns int
Die Funktion getall() gibt die Schaltzustände aller
Ports
als 16Bit Bitmuster zurück.
set() Nach oben
function set(byte Port, int state)
Die Funktion set() setzt den angegebenen Port ensprechend des Werts state.
Port | Port 0 bis 15 |
state | Schaltzustand 0 = low 0!= high |
get() Nach oben
function get(byte Port)
Mit der Funktion get() wird der Schaltzustand eines einzelnen Ports abgefragt.
Port | Port 0 bis 15 |
tog()
Nach oben
function tog(byte Port)
Mit tog() wird der angegebene Port invertiert.
Port | Port 0 bis 15 |
pulse() Nach oben
function pulse(bytePort)
Mit der Funktion pulse() wird ein kurzer Nadelimpuls an
dem angegebenen
Port ausgegeben.
Port | Port 0 bis 15 |
LCDlight() Nach oben
function LCDlight(int state)
Mit der Funktion LCDlight() wird die LCD-Beleuchtung geschaltet.
state | Schaltzustand 0 = low 0!= high |
getLCDlight()
Nach oben
function getLCDlight() returns int
Mit der Funktion getLCDlight() wird der Schaltzustand der
LCD-Beleuchtung
abgefragt.
togLCDlight()
Nach oben
function tog(byte Port)
Mit togLCDlight() wird der Schaltzustand der LCD-Beleuchtung invertiert.
setLED() Nach oben
function setLED(byte LED, int state)
Die Funktion setLED() schaltet die angegebene LED entsprechend des Werts state.
LED | LED 1 bis 8 |
state | Schaltzustand 0 = low 0!= high |
getLED() Nach oben
function getLED(byte LED) returns int
Mit der Funktion getLED() wird der Schaltzustand der
angegebenen
LED zurückgegeben.
LED | LED 1 bis 8 |
togLED()
Nach oben
function togLED(byte LED)
Mit togLED() wird der Schaltzustand der angegebenen LED invertiert.
LED | LED 1 bis 8 |
setRel() Nach oben
function setRel(byte Rel, int state)
Die Funktion setRel() schaltet das angegebene Relais entsprechend des Werts state.
Rel | Relais 1 bis 2 |
state | Schaltzustand 0 = low 0!= high |
getRel() Nach oben
function getRel(byte Rel) returns int
Mit der Funktion getRel() wird der Schaltzustand des
angegebenen
Relais zurückgegeben.
Rel | Relais 1 bis 2 |
togRel()
Nach oben
function togRel(byte Rel)
Mit togRel() wird der Schaltzustand des angegebenen Relais invertiert.
Rel | Relais 1 bis 2 |
setPort() Nach oben
function setPort(byte PO, int state)
Die Funktion setPort() schaltet die Ports PO.0 bis .4 entsprechend des Werts state.
PO | 0 bis 4 = Port PO.0 bis PO.4 |
state | Schaltzustand 0 = low 0!= high |
getPort() Nach oben
function getPort(byte PO) returns int
Mit der Funktion getPort() wird der Schaltzustand des
angegebenen
Ports zurückgegeben.
PO | 0 bis 4 = Port PO.0 bis PO.4 |
togPort()
Nach oben
function togPort(byte Rel)
Mit togPort() wird der Schaltzustand des angegebenen Ports invertiert.
PO | 0 bis 4 = Port PO.0 bis PO.4 |
pulsePort() Nach oben
function pulsePort(byte PO)
Mit der Funktion pulsePort() wird ein kurzer Nadelimpuls an
dem angegebenen
Port ausgegeben.
PO | 0 bis 4 = Port PO.0 bis PO.4 |
inline function _setall(byte
states[], int state)
inline function
_setport(byte states[], byte Port, int state)
inline function
_togport(byte states[], byte Port)
inline function
_pulseport(byte states[], byte Port)
inline function
_getport(byte states[], byte Port) returns int
Diese Funktionen werden zum Aufruf des Systemtreibers sys0001.hex benutzt.
Sie sollten ohne genauere Kenntnisse über die Funktion des Systemtreibers
nicht direkt genutzt werden !!
Autor: André Helbig Mail: andre.h@cc2net.de
Erstellt: 1.1.2004