I2CMUX8.C2 - Hilfe


Beschreibung

Einfügen als Systemmodul

Konstanten

Hinweise

Funktionen:

set()
switch()
get()


Beschreibung   Nach oben

Das Modul i2cmux8.c2 ist ein Treiber für den I²C-Multiplexer PCA9548A
 - z.B. für den CCTools Baustein I2C-MUX8 HS -, als auch PCA9547,
PCA9546A, PCA9545A, PCA9544A, PCA9543A, PCA9542A, PA9540B,
um zwischen mehreren Sub-Bussen umschalten zu können.


Einfügen als Systemmodul
   Nach oben

Die Datei i2cmux8.c2 in das Verzeichnis .\CControl2\Lib der IDE
kopieren und in der Datei modules.txt die Zeile i2cmux8.c2  
unterhalb von i2c.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.


Konstanten   Nach oben

Busadressen:
const Addr[] =0xE0,0xE2,0xE4,0xE6,0xE8,0xEA,0xEC,0xED;
const AddrR[]=0xE0,0xE2,0xE4,0xE6,0xE8,0xEA,0xEC,0xED;

Diese Adressen entsprechen allen oben aufgeführten ICs mit 3 Adressleitungen.
ICs mit weniger Adressleitungen nutzen nur einen Teil dieser Adressen.
(Ist nur A0 und A1 vorhanden, so sind nur die Indizies 0-3 möglich.)


Funktionen:


Control-Rgister setzen
  Nach oben

    function set(byte addr, byte controlregister) returns int

Mit dieser Funktion wird der Bus über das Controlregister festgelegt.
Bei den ICs PCA9548A, PCA9545A und PCA9543A können so auch
über Bitmuster mehrere Sub-Busse gleichzeitig gewählt werden.
Bei allen anderen Multiplexer-ICs wird der Busindex entsprechend der Angabe
im Datenblatt gewählt. 
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0).

addr Baustein 0-7 entsprechend A0,A1,A2
controlregister Control-Register


Bus schalten  Nach oben

    function switch(byte addr, int bus) returns int

Nur bei ICs PCA9548A, PCA9545A und PCA9543A möglich.
Mit dieser Funktion wird der Bus festgelegt, welcher durchgeschalten werden soll.
Es wird immer nur der angegebene Sub-Bus durchgeschaltet. Die restlichen Sub-Busse
werden abgeschaltet.
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0).

addr Baustein 0-7 entsprechend A0,A1,A2
bus Bus:
-1 = kein Bus
0 bis 7 = Bus 0 bis Bus 7




Bus abfragen
  Nach oben

    function get(byte addr) returns int

Mit get() wird der aktuelle Wert des Control-Register zurückgegeben.

addr Baustein 0-7 entsprechend A0,A1,A2





Hinweise:

Wichtig bei Multithreading:

Wird der I²C-Multiplexer von mehreren Threads angesprochen, so müssen
die Routinen mit einem eigenem Capture mit einem gemeinsamen Flag gecaptured werden.
Hierfür ist eine Flag-Variable im Modul bereits definiert.

Es gilt dann für jeden Thread folgendes Schema:
-Capture setzen
-I²C-MUX ansprechen
-I²C-Bus Bausteine hinter MUX ansprechen
-Captrure lösen


Autor: André Helbig                           Erstellt: 24.02.2008 ©www.CC2Net.de