Einfügen als gemeinsames Modul
Funktionen:
init()
addDevice()
get()
getCounter()
Threads:
getCnt{}
Beschreibung Nach oben
Das Modul i2ccnt2.c2 ist der Treiber für den CCTools
2-fach 8Bit-I²C-Bus-Impuls-Zähler I2CCNT2 HS.
Einfügen als gemeinsames Modul
Nach oben
Die Datei i2ccnt2.c2 in das Verzeichnis .\CControl2\UserLib
kopieren und in der Datei modules.txt
die Zeile i2ccnt2.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.
Funktionen:
init() Nach oben
function init(byte IntPort, int runGetCnt)
Die Funktion init() initialisiert das Modul.
Mit IntPort wird ein I/O-Port als Interrupt-Eigang definiert. Dieser wird
für den Abfragethread benötigt.
Die Funktion muß in jedem Fall aufgerufen werden, auch wenn der Thread getCnt
nicht genutzt wird.
IntPort | I/O-Port, welcher als Interrupteingang
benutzt wird. 0-15 entsprechend für P1L und P1L 255 = kein Int-Port |
runGetCount | Wenn True (ungleich 0), wird der Thread
getCnt gestartet, welcher alle Zähler bei einem Interrupt selbständig abfragt. |
addDevice() Nach oben
function addDevice(byte addr, byte ID) returns int
Die Funktion addDevice() initialisiert den mit addr angegebenen
Zählerbaustein.
Mit dem Paramtert ID wird dem Baustein eine ID zugewiesen.
Die Funktion gibt true(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls false.
addr | Sub-Adresse 0-63 |
ID | Zähler ID 0 bis maxCounter (Standard 32, maximal 64) |
get() Nach oben
function get(byte CntIdx, int clear) returns int
Mit get() wird der durch den thread getCnt erfasste
Zählerwert ausgelesen.
Mit dem Parameter clear wird angegeben, ob der Zähler beim Auslesen
zurückgesetzt werden soll.
Die Funktion gibt den Zählerwert zurück.
CntIdx | Counter-Index: 0 bis maxCounter * 2 0: Eingang CNT0 von Modul mit zugewiesender ID 0 1: Eingang CNT1 von Modul mit zugewiesender ID 0 2: Eingang CNT0 von Modul mit zugewiesender ID 1 3: Eingang CNT1 von Modul mit zugewiesender ID 1 usw. |
clear | Wenn True (ungleich 0) wird der Zähler nach dem Auslesen auf 0 zurückgesetzt. |
getCounter() Nach oben
function getCounter(byte CounterID, int clear, long Counter[]) returns int
Mit getCounter() wird der angegebene Zählerbaustein abgefragt,
wenn
der Thread getCnt nicht benutzt wird.
Die Funktion summiert die Zählerwerte über ein globales Datenarray auf, wenn clear auf False(gleich 0) steht.
Es werden beide Zähler über ein angegebenes Long-Array mit mind. 2 Elementen
zurückgegeben.
Die Funktion gibt true(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls false.
CounterID | Dem Zählermodul zugewiesene ID |
clear | Wenn True (ungleich 0) wird der Zähler nach dem Auslesen auf 0 zurückgesetzt. |
Counter[] | Longarray für Zählerdaten. |
Beispiel zu getCounter(): (Zähler an Addr. 5 mit ID 0, Interrupt an
P1L.3)
thread main
{long cnt[2];
hwcom.init();
hwcom.setspeed(8)
iccnt2.init(3, 0);
iccnt2.addDevice(5, 0);
loop
{
wait not ports.get(i2ccnt2.Int);
hwcom.clr();
getCounter(0, 0,
cnt);
hwcom.num(cnt[0]);
hwcom.tab();
hwcom.num(cnt[1]);
sleep 100;
}
}
Threads:
getCnt() Nach oben
thread getCnt{}
Dieser Thread liest die angeschlossenen Zählerbausteine automatisch ein,
sobald ein Interrupt von mind. einem Baustein gemeldet wird.
Dieser Thread kann über die Funktion init()
durch den Parameter runGetCnt gestartet werden.
Autor: André Helbig
Erstellt: 01.12.2009 ©www.CC2Net.de