Funktionen:
init()
resetDevices()
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 von MAXIM,
und somit auf für das CCTools "I2C-1Wire-Bridge 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:
const Addr[] =0x30,0x32,0x34,0x36;
const AddrR[]=0x31,0x33,0x35,0x37;
//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
//DS2482-Register
const SREG = 0xF0;
// Statusregister
const DREG = 0xF0;
// Datenregister
const CREG = 0xF0;
// 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 entsprechend A0,A1 |
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-100 befindet, andernfalls False(0).
addr | Baustein 0-3 entsprechend A0,A1 |
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 entsprechend A0,A1 |
Konfigurationsregister setzen Nach oben
function setConfig(byte addr, byte data) returns int
Mit setConfig() wird das Konfigurationsregister des DS2482-100 beschrieben
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 |
Konfigurationsregister
lesen Nach oben
function getConfig(byte addr) returns int
Mit getConfig() wird das Konfigurationsregister des DS2482-100
abgefragt und
als Bytewert zurückgegeben
addr | Baustein 0-3 entsprechend A0,A1 |
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 entsprechend A0,A1 |
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 entsprechend A0,A1 |
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 entsprechend A0,A1 |
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 entsprechend A0,A1 |
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 entsprechend A0,A1 |
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 entsprechend A0,A1 |
Autor: André Helbig
Erstellt: 18.06.2006 ©www.CC2Net.de