I2CMUX.C2 - Hilfe


Beschreibung

Einfügen als Systemmodul

Konstanten

Hinweise

Funktionen:

init()
set()
get()


Beschreibung   Nach oben

Das Modul i2cmux.c2 ist ein Treiber für den Analog-Schalter MAX4572
zur Verwendung als I²C-Bus-Multiplexer - z.B. für die CCTools Bausteine
I2C-MUX4 HS und I2C-MUX7- , um zwischen mehreren Sub-Bussen
umschalten zu können.
Es können bis zu vier I²C-Multiplexer an einem I²C-Bus betrieben werden.
Werden die I²C-Multiplexer kaskadiert, so sind theoretisch bis zu 344 möglich.


Einfügen als Systemmodul
   Nach oben

Die Datei i2cmux.c2 in das Verzeichnis .\CControl2\Lib der IDE
kopieren und in der Datei modules.txt die Zeile i2cmux.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[] =0x68,0x6A,0x6C,0x6E;

Bitmuster für die verschiedenen Schaltzustände:
const BusL[]=0x00,0x05,0x0A,0x50,0xA0,0x00,0x00,0x00;
const BusH[]=0x00,0x00,0x00,0x00,0x00,0x14,0x09,0x22;

Die Schalter des MAX4572 werden folgendermaßen verwendet

Bus SCL SDA
1 SW1A SW2A
2 SW1B SW2B
3 SW3A SW4A
4 SW3B SW4B
5 SW5 SW7A
6 SW6A SW7A
7 SW6B SW8
 

Funktionen:

Initalisieren  Nach oben

    function init(byte addr) returns int

Mit dieser Funktion wird der MAX4572 als I²C-Bus-Multiplexer initialisiert.
Es werden dabei alle Schalter geöffnet.
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0)

addr Baustein 0-3 entsprechend A0,A1

Bus setzen  Nach oben

    function set(byte addr, byte bus) returns int

Mit dieser Funktion wird der Bus festgelegt, welcher durchgeschalten werden soll.
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0).

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



Bus abfragen
  Nach oben

    function get(byte addr) returns int

Mit get() wird der aktuell durchgeschaltene Bus zurückgegeben.
Die möglichen Werte sind hier 1 bis 7, für Bus1 bis Bus7, und 
0 für kein Bus(alle Schalter offen).

addr Baustein 0-3 entsprechend A0,A1





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.

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   Mail: andre.h@cc2net.de    Erstellt: 5.10.2003 ©www.CC2Net.de