PCF8583.C2 V1.51 - Hilfe


Beschreibung

Einfügen als System-Modul

Funktionen:

init()
setcontrolreg()
getcontrolreg()

Uhr-Funktionen:
setTime()
setDate()
setDST()
getTime()
getDate()
getDST()
syncpcf()
synccc2()

Watchdog-Funktionen:
Hostmode()
resetWD()
setWDtimeout()

RAM-Funktionen:
writebyte()
writeint()
writearray()
readbyte()
readint()
readarray()

Threads:
sync()
watchdog()



Beschreibung   Nach oben

Das Modul pcf8583.c2 ist ein Treiber für den Uhrenbaustein PCF8583 und
für die CCTools Bausteine PCF-UHR-WD, PCF-RTC-EEProm und dem
Uhrenbaustein auf dem CC2-ReglerBoard.
Das Modul unterstützt die Watchdogfunktionalität des PCF-UHR-WD und
des CC2-ReglerBoards

Einfügen als System-
Modul
   Nach oben

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


Funktionen:

init()   Nach oben

    function init(byte A0, byte setCC2clock, byte autosync, byte watchdog,
                      byte enableHostKey) returns int

Die Funktion init() initialisiert den Uhrenbaustein.
Es wird 0xFF(True) zurückgegeben, wenn der Uhrenbaustein unter der angegebenen
Adresse gefunden wurde, 0x80 wenn der Watchdog zuvor einen Reset ausgelöst hatte
und 0x00(False), wenn sich an der angegebenen Adresse kein Uhrenbaustein befindet.

A0 Adresse des Bausteins:
0 oder 1 ,(1 bei PCF-UHR-WD und CC2-ReglerBoard)
setCC2clock Setzen der CC2-Uhr mit PCF8583-Zeit wenn ungleich 0
autosync Automatisches stellen der PCF8583-Uhr mit der
DCF77-Zeit (starten des Threads sync(), wenn ungleich 0
watchdog 0 bis 99 - Watchdogtimeout in sec.
Bei Werten gtrößer 0 wird der Watchdogthread
automatisch gestartet. Soll der Watchdog nicht durch diesen
Thread, sondern "manuell" mit resetWD() zurückgesetzt
werden, so muß als Wert 0 übergeben werden und nach
dem Init das Watchdogtimeout mit setWDtimeout()
gesetzt werden.
enableHostKey Bei True (ungleich 0) wird, wenn der Thread "watchdog"
läuft, beim Drücken der Hosttaste der Watchdog deaktiviert
und der Hostmode eingeleitet.
(vgl. Funktion Hostmode() )


setcontrolreg()   Nach oben

    function setcontrolreg(byte register, byte setmask) returns int

Mit setcontrolreg() kann das control-Register gesetzt werden.
Es kann dabei eine Maske angegeben werden, damit nur gezielt bestimmte
Bytes geändert werden können.

register Bitmuster für Register
setmask Bitmuster für Bits, die geädert werdendürfen.


getcontrolreg()   Nach oben

    function getcontrolreg() returns byte

Die Funktion getcontrolreg() liest das Control-Register aus und gibt dieses
als Bytewert zurück.


Uhr-Funktionen:

setTime()   Nach oben

    function setTime(system.TIME time) returns int

Mit der Funktion setTime() wird die Zeit des Uhrenbausteins entsprechend
der Zeit in time gestellt.

time Variable mit Zeitinformationen (siehe system.c2)
time.hour = Stunde
time.minute = Minuten
time.second = Sekunden


setDate()
   Nach oben

    function setDate(int year, byte month, byte day, byte dayofweek) returns int

Mit der Funktion setDate() wird das Datum des Uhrenbausteins entsprechend
der übergebenen Variablen gestellt.
Die Jahreszahl wird dabei zusätzlich in einem Byte des RAMs in den 
in der Konstante ramyearaddr angegebenen Speicherbereich geschrieben.
So kann zuverlässig die Jahreszahl und ein Jahreswechsel erkannt werden.

year Jahr  (2000 - 2199)
month Monat (1 - 12)
day Tag (1 - 31)
dayofweek Wochentag (0 - 6, 0= Sonntag)

 

setDST()   Nach oben

    function setDST(byte state) returns int

Mit der Funktion setDST() wird der Speicherbereich für das DST-Flag (Sommerzeitflag)
im im Uhrenbaustein entsprechend der übergebenen Variablen gestetzt.

DST 0= Winterzeit, ungleich 0=Sommerzeit

 

getTime()   Nach oben

    function getTime(system.TIME time) returns int

Mit der Funktion getTime() wird die aktuelle Zeit des Uhrenbausteins ausgelesen und
in die angegebene Variable des Datentyps system.TIME gespeichert.

time Variable mit Zeitinformationen (siehe system.c2)
time.hour = Stunde
time.minute = Minuten
time.second = Sekunden


getDate()
   Nach oben

    function getDate(int date[]) returns int

Mit der Funktion getdate() wird das aktuelle Datum des Uhrenbausteins ausgelesen und
in einen Bytepuffer mit mindestens 4 Elementen gespeichert.

date[] date[0] = Tag (1 - 31)
date[1] = Monat (1 - 12)
date[2] = Jahr (2000 - 2199)
date[3] = Wochentag (0 - 6)


getDST()   Nach oben

    function getDST() returns int

Mit der Funktion getDST() wird der Zustand des im Uhrenbaustein gespeicherten
DST-Flags zurückgegeben. 0 für Winterzeit, -1 für Sommerzeit.

 

syncpcf()   Nach oben

    function syncpcf()

Die Funktion syncpcf() syncronisiert den Uhrenbaustein mit der Zeit der CC2.
es wird dabei auf den Sekundenwechsel gewartet.


synccc2()   Nach oben

    function synccc2() returns int

Die Funktion synccc2() syncronisiert die Uhr der CC2 mit der aktuellen Zeit des
Uhrenbaustein. Es wird dabei auf den Sekundenwechsel beim PCF8583 gewartet.
Die Funktion gibt bei erfolgreichen Syncronisieren -1(True) zurück. Andernfalls 0(False).


Watchdog-Funktionen:

Hostmode()   Nach oben

    function Hostmode()

Die Funktion Hostmode() deaktiviert den Watchdog und versetzt die C-Control II
in den Hostmode.


resetWD()
   Nach oben

    function resetWD()

Die Funktion resetWD() setzt den Watchdog zurück.

setWDtimeoutt()   Nach oben

    function setWDtimeout(byte watchdogtimeout)

Mit der Funktion setWDtimeout() wird die Zeit in Sekunden eingestellt,
nach der der Watchdog spätestens reagieren soll.

watchdogtimeout Timeout in sec. (0-99)

 


RAM-Funktionen:

Allgemeine Hinweise zur RAM-Nutzung:

Achtung! Die Adressen 0x00 bis 0x0F werden von der Uhr verwendet !
0x10 und 0x11 werden zur Speicherung von Jahreszahl und Sommerzeitflag benutzt,
können aber im Modul über die Konstanten ramyearaddr und ramDSTaddr frei angepasst werden.

writebyte()   Nach oben

    function writebyte(byte addr, byte data)

Dier Funktion writebyte() schreibt einen Bytewert in das RAM des Uhrenbausteins.

addr Adresse im RAM 0x00 bis 0xFF
Hinweise zur RAM-Nutzung beachten !
data Datenbyte 0x00 bis 0xFF

writeint()   Nach oben

    function writeint(byte addr, int data)

Dier Funktion writebyte() schreibt einen Integerwert in das RAM des Uhrenbausteins.

addr Adresse im RAM 0x00 bis 0xFF
Hinweise zur RAM-Nutzung beachten !
data Dateninteger 0x00 bis 0xFFFF

writearray()   Nach oben

    function writearray(byte addr, byte data[], byte len)

Die Funktion writearray() schreibt einen Bytearray in das RAM des Uhrenbausteins.

addr Adresse im RAM 0x00 bis 0xFF
Hinweise zur RAM-Nutzung beachten !
data[] Bytepuffervariable mit Daten
len Anzahl der zu schreibenden Bytes 1 bis 255

readbyte()   Nach oben

    function readbyte(byte addr) returns byte

Dier Funktion writebyte() liest ein Byte aus dem RAM des Uhrenbausteins.

addr Adresse im RAM 0x00 bis 0xFF
Hinweise zur RAM-Nutzung beachten !

readint()   Nach oben

    function writeint(byte addr) returns int

Dier Funktion readint() liest ein Integer aus dem RAM des Uhrenbausteins.

addr Adresse im RAM 0x00 bis 0xFF
Hinweise zur RAM-Nutzung beachten !

readarray()   Nach oben

    function readarray(byte addr, byte data[], byte len)

Mit der Funktion readarray() wird eine angegenbene Anzahl von Bytes
aus dem RAM des Uhrenbausteins ausgelesen.

addr Adresse im RAM 0x00 bis 0xFF
Hinweise zur RAM-Nutzung beachten !
data[] Bytepuffervariable für die Daten
len Anzahl der zu lesenden Bytes 1 bis 255

 


Threads:

sync()   Nach oben

    thread sync{}

Dieser Thread syncronisiert stündlich den Uhrenbaustein mit der DCF77-Zeit,
sobald und solange ein gültiges Zeitsignal empfangen wird.(OSOPT_V2 oder höher erforderlich)
Liegt kein DCF77-Signal an, so wird der Uhrenbaustein ebenfalls stündlich
syncronisiert. Jedoch frühestens eine Stunde nach dem Starten des Threads.
Dieser Thread kann über die Funktion init() durch den Parameter autosync gestartet werden.


watchdog()
   Nach oben

    thread watchdog{}

Dieser Thread stellt im Intervall timeout/2 den Watchdog zurück.
Dieser Thread kann über die Funktion init() gestartet werden.
Wird dieser Thread nicht benutzt muß der Watchdog "manuell" über
die Funktion resetWD() regelmäßig zurückgesetzt werden, damit kein
Reset augelöst wird


Author: André Helbig   Mail: andre.h@cc2net.de    Erstellt: 7.8.2004 ©www.CC2Net.de