DS2482.C2 V1.1 - Hilfe


Beschreibung

Einfügen als Systemmodul

Konstanten

Funktionen:

init()
resetDevices()
setCH()
getCH()
getStatus()
setConfig()
getConfig()
writeByte()
readByte()
getROM()
getDevice()
matchROM()
skipROM()


Beschreibung   Nach oben

Das Modul ds2482.c2 ist ein Treiber für die I²C-1Wire-Bridge DS2482-100/-800 von MAXIM,
und somit auf für das CCTools "I2C-1Wire-Bridge HS", sowie "I2C-1Wire-Bridge8 HS".
So können beliebige 1-Wire-Bus-Komponenten an der CC2 betrieben werden.


Einfügen als Systemmodul
   Nach oben

Die Datei ds2482.c2 in das Verzeichnis .\CControl2\Lib der IDE
kopieren und in der Datei modules.txt die Zeile ds2482.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: (Index 4 bis 7 nur DS2482-800)
const Addr[] =0x30,0x32,0x34,0x36,0x38,0x3A,0x3C,0x3E;
const AddrR[]=0x31,0x33,0x35,0x37,0x39,0x3B,0x3D,0x3F;

//DS2482-Kommandos
const DRST     = 0xF0// Device Reset
const WCFG     = 0xD2// Write Configuration
const SRP      = 0xE1// Set Read Pointer
const WRST     = 0xB4// 1-Wire Reset
const WWB      = 0xA5// 1-Wire Write Byte
const WRB      = 0x96// 1-Wire Read Byte
const WSB      = 0x87// 1-Wire Single Bit
const WT       = 0x78// 1-Wire Triplet
const CHSL     = 0xC3// Channel Select
const CH[]     = 0xF0, 0xE1, 0xD2, 0xC3, 0xB4, 0xA5, 0x96, 0x87;
//DS2482-Register
const SREG     = 0xF0// Statusregister
const DREG     = 0xE1// Datenregister
const CHSR     = 0xD2// Channel Select Register
const CREG     = 0xC3// Konfigurationsregister

//1-Wire Kommandos
const RROM     = 0x33// Read-ROM
const MROM     = 0x55// Match-ROM
const SROM     = 0xCC// Skip-ROM
const FROM     = 0xF0// Search-ROM


Funktionen:

Initalisieren / Reset  Nach oben

    function init(byte addr) returns int

Mit dieser Funktionen wird der DS2482 initialisiert/zurückgesetzt.
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0).

addr Baustein 0-3(7) entsprechend A0,A1(,A2)

1Wire-Kanal beim DS2482-800 auswählen  Nach oben

    function setCH(byte addr, byte channel) returns int

Mit dieser Funktion wird der 1Wire-Port beim DS2482-800 ausgewählt.
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0), ist der Baustein nach dem Schreiben länger
nicht bereit, so wird der Wert 2 für "Busy" zurückgegeben.

addr Baustein 0-3(7) entsprechend A0,A1(,A2)
channel Kanale 0 bis 7


aktuellen 1Wire-Kanal auslesen  Nach oben

    function getCH(byte addr) returns int

Mit getCH() wird der aktuell gesetzte 1Wire-Port des DS2482-800 abgefragt und
als Bytewert 0 bis 7 zurückgegeben

addr Baustein 0-3(7) entsprechend A0,A1(,A2)

 

1Wire Devices zurücksetzen  Nach oben

    function resetDevices(byte addr) returns int

Diese Funktion setzt die Bausteine am 1W-Bus zurück.
Diese funktion muß vor jeder Kommunikation am 1W-Bus aufgerufen werden.
Sie entspricht einer Startbedingung.
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein DS2482 befindet, andernfalls False(0).

addr Baustein 0-3(7) entsprechend A0,A1(,A2)


Statusregister abfragen  Nach oben

    function getStatus(byte addr) returns byte

Mit diesen Funktionen wird das Sttusregister des DS2482 ausgelesen.
Das Status-Byte wird zurückgegeben.

addr Baustein 0-3(7) entsprechend A0,A1(,A2)


Konfigurationsregister setzen  Nach oben

    function setConfig(byte addr, byte data) returns int

Mit setConfig() wird das Konfigurationsregister des DS2482 beschrieben
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0).

addr Baustein 0-3(7) entsprechend A0,A1(,A2)


Konfigurationsregister lesen  Nach oben

    function getConfig(byte addr) returns int

Mit getConfig() wird das Konfigurationsregister des DS2482 abgefragt und
als Bytewert zurückgegeben

addr Baustein 0-3(7) entsprechend A0,A1(,A2)

 

Byte auf den 1Wire-Bus ausgeben  Nach oben

    function writeByte(byte addr, byte data) returns int

Mit dieser Funktion wird ein Byte auf den 1Wire-Bus ausgegeben.
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0), ist der Baustein nach dem Schreiben länger
nicht bereit, so wird der Wert 2 für "Busy" zurückgegeben.

addr Baustein 0-3(7) entsprechend A0,A1(,A2)
data Datenbyte


Byte vom 1Wire-Bus lesen  Nach oben

    function readByte(byte addr) returns int

Die Funktion readByte() liest ein Datenbyte von einem 1Wire-Device und gibt dieses zurück.
Die Funktion gibt 0x200 zurück, wenn es während des Lesens zu einem Timeout kommt.
Befindet sich an angegebener Adresse kein DS2482, so wird 0x100 zurückgegeben.

addr Baustein 0-3(7) entsprechend A0,A1(,A2)


ROM-Adresse von einem 1Wire-Device ermitteln  Nach oben

    function getROM(byte addr, byte ROM[]) returns int

Mit dieser Funktion wird die 64Bit-ROM-Adresse aus einem 1Wire-Bus-Device ausgelesen.
Es darf sich zu diesem Zeitpunkt nur ein 1Wire-Bus-Baustein am angesprochenen DS2482
befinden, da sonst eine AND-Verknüpfung der ROM-Adressen aller Bausteine
am 1Wire-Bus ergibt.
Zur Datenübergabe muß ein Bytearray mit mindestens 8 Elementen übergeben werden,
in Welches die ROM-Adresse geschrieben wird.
Die ROM-Adresse besteht 3 Teilen:
1. 8Bit-Family-Code
    Mit diesem kann die Art des 1Wire-Bus-ICs identifiziert werden.
2. 48Bit-Seriennummer
    Dies ist der Hauptteil der Adresse
3. 8Bit-Prüfsumme
    Diese kann benutzt werden, um Übertragungsfehler auszuschließen.
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0).

addr Baustein 0-3(7) entsprechend A0,A1(,A2)
ROM[] Bytearray mit mind. 8 Elementen für die ROMAdresse



1Wire-Baustein(e) ermitteln  Nach oben

    function getDevice(byte addr, byte first, byte ROMold[], byte LastDis, byte ROM[]) returns int

Mit Hilfe der Funktion getDevice() werden die 64Bit-ROM-Adressen aller
am Bus angeschlossenen 1Wire-Bus-Bausteine ermittelt.
Zur Datenübergabe muß ein Bytearray mit mindestens 8 Elementen übergeben werden,
in Welches die ROM-Adresse geschrieben wird.
Die ROM-Adresse besteht 3 Teilen:
1. 8Bit-Family-Code
    Mit diesem kann die Art des 1Wire-Bus-ICs identifiziert werden.
2. 48Bit-Seriennummer
    Dies ist der Hauptteil der Adresse
3. 8Bit-Prüfsumme
    Diese kann benutzt werden, um Übertragungsfehler auszuschließen.
Die Funktion gibt diue Bitposition der letzten Diskrepanz zurück.
(1 bis 64 für Bit0 bis Bit63, 0=keine Diskrepanz)
Die Funktion wird in einer Schleife aufgerufen, um alle ROM-Adressen zu ermitteln.
Sobald der Rückgabewert 0 ist, wurden keine weiteren Bausteine gefunden.

addr Baustein 0-3(7) entsprechend A0,A1(,A2)
first True = erster Funktionsdurchlauf
           Die Parameter werden initialisiert. ROMold[] und
           LastDis werden ignoriert
False = alle weiteren Funktionsaufrufe
ROMold[] Bytearray mit der zuletzt ermittelten ROM-Adresse
LastDis Rückgabewert von vorherigen Funktionsdurchlauf
Bit-Position der letzten Diskrepanz
ROM[] Bytearray mit mind. 8 Elementen für die ROMAdresse



1Wire-Device mit ROM-Adresse ansprechen  Nach oben

    function matchROM(byte addr, byte ROM[]) returns int

Mit der Funktion matchROM() wird ein bestimmter 1Wire-Bus-Baustein adressiert.
Nur der Baustein mit dieser ROM-Adresse wird angesprochen.
Die Funktion führt vor der Adressierung die Funktion resetDevices() aus.
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0).

addr Baustein 0-3(7) entsprechend A0,A1(,A2)
ROM[] Bytearray mit mit der 8Byte ROMAdresse



1Wire-Device ohne  ROM-Adresse ansprechen  Nach oben

    function skipROM(byte addr) returns int

Mit der Funktion skipROM() wird ein einzelner 1Wire-Bus-Baustein angesprochen,
ohne die ROM-Adresse zu senden.
Es darf sich nur ein einzelner 1Wire-Baustein am 1W-Bus befinden.
Die Funktion führt vor der Adressierung die Funktion resetDevices() aus.
Die Funktion gibt True(-1) zurück, wenn sich an der angegebenen Adresse
ein Baustein befindet, andernfalls False(0).

addr Baustein 0-3(7) entsprechend A0,A1(,A2)



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