Funktionen:
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