I2CCNT2.C2 - Hilfe


Beschreibung

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