EEPROM.C2 V2.4 - Hilfe
EEPROM2K.C2 V1.2 - Hilfe


Beschreibung

Einfügen als Systemmodul

Konstanten

Funktionen:
getErr()
write()
writebyte()
writeint()
writelong()
writebytearray()
writeintarray()
writelongarray()

writestr()
read()
readbyte()
readint()
readlong()
readbytearray()
readintarray()
readlongarray()

readstr()


Beschreibung   Nach oben

Das Modul eeprom.c2 bzw. eeprom2k.c2 ist ein Treiber für das einfache
Ansprechen serieller EEProms (I²C) vom Typ 24C32 bis 24C512 bzw. für 24C02 & 24C01 .
Alle Funktionen des Moduls sind über das I²C-Capture gecaptured.

Einfügen als Gemeinsames-
Modul
   Nach oben

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

const Pagewrite  = 32;//in Byte; siehe EEProm-Datenblatt
Die Werte für das Pagewrite sind je nach EEPromgröße unterschiedlich:
(ggf. im Datenblatt nachlesen !)

24C01 4 Byte
24C02 8 Byte
24C32 32 Byte
24C64 32 Byte
24C128 64 Byte
24C256 64 Byte
24C512 128 Byte

const EEwaitTime1;//Wartezeit nach erfolglosem Adressierversuch in ms
const EEwaitLoops=100;//Max.Anzahl der Adressierversuche.


Funktionen:

getErr()   Nach oben

    function getErr() returns long

Die Funktion getErr() gibt den letzten Fehler, den es beim Schreiben ins
EEProm mit den Schreibfunktionen bzw. beim Lesen mit den Funktionen
readbyte, readint und readlong gab, zurück und löscht den Fehlerspeicher.
Mit Auswertung der Rückgabe kann bei Schreibfunktionen die Ursache
des Fehlers herausgefunden werden. Bei den o.g. Lesefunktionen kann
so lediglich überprüft werden, ob gelesen werden konnte.
Das Hi-Word(oberen16 Bit) des Rückgabewertes trägt die ID der Funktion, 
bei der der Schreib-/Lesefehler aufgetreten ist. Im Lo-Word(unteren 16 Bit)
steht die Anzahl an Bytes, Werte die ins EEProm geschrieben werden konnten:

ID (Hi-Word) Funktion Lo-Word
0b0001 (0x1) readbyte() 0x0000
0b0010 (0x2) readint() 0x0000
0b0011 (0x3) readlong() 0x0000
0b0101 (0x5) writebyte() 0x0000
0b0110 (0x6) writeint() Anzahl geschriebener Bytes
0b0111 (0x7) writelong() Anzahl geschriebener Bytes
0b1001 (0x9) writebytearray() Anzahl geschriebener Bytes
0b1010 (0xA) writeintarray() Anzahl geschriebener Werte
0b1011 (0xB) writelongarray() Anzahl geschriebener Werte
0b1100 (0xC) writestring() Anzahl geschriebener Bytes

 

Schreibzugriff einleiten   Nach oben

    function write(byte eepromaddr, int addr) returns int

Mit write() wird der Schreibzugriff eingeleitet. Diese Funktion wird von
allen anderen Schreibfunktionen verwendet.
Antwortet das EEprom nach EEwaitLoops Versuchen nicht, gibt die Funktion
False(0) zurück und löst das I²C-Capture. Andernfalls wird True(-1) zurückgegeben und
das I²C-Capture bleibt bestehen.

eepromaddr Baustein-Adresse des EEProms: 0-7 (entsprechend A2-A0)
addr Adresse für die Daten
 

Schreibfunktionen für einzelne Werte   Nach oben

    function writebyte(byte eepromaddr, int addr, byte data) returns int
    function writeint(byte eepromaddr, int addr, int data) returns int
    function writelong(byte eepromaddr, int addr, long data) returns int

Mit diesen Funktionen werden einzelne Werte in das EEProm geschrieben.
Bei der Adressierung muß beachtet werden, daß die verschiedenen
Variabeltypen eine unterschiedliche Anzahl an Bytes belegen.
(Byte: 1Byte, Integer: 2Byte, Long: 4Byte)
Alle Werte werden mit MSB first gespeichert.
Kommt es beim Schreibvorgang zu einem Fehler, so wird FALSE (0) zurückgegeben.
Bei erfolgreichem Schreiben der Daten wird True(-1) zurückgegeben.

eepromaddr Baustein-Adresse des EEProms: 0-7 (entsprechend A2-A0)
addr Adresse für die Daten
data zu speichernder Wert

Schreibfunktionen für Arrays   Nach oben

    function writebytearray(byte eepromaddr, int addr, byte data[], int len) returns int
    function writeintarray(byte eepromaddr, int addr, int data[], int len) returns int
    function writelongarray(byte eepromaddr, int addr, long data[], int len) returns int

Mit diesen Funktionen können Arrays (Byte, Integer und Long) in das EEProm
geschrieben werden. Werte zwischen -32768 und -1 für len werden
als 32768 bis 65536 interpretiert.
Alle Werte werden mit MSB first gespeichert.
Kommt es beim Schreibvorgang zu einem Fehler, so wird FALSE (0) zurückgegeben.
Bei erfolgreichem Schreiben der Daten wird True(-1) zurückgegeben.

eepromaddr Baustein-Adresse des EEProms: 0-7 (entsprechend A2-A0)
addr Start-Adresse für die Daten
data zu speicherndes Daten-Array
len Anzahl zu speichernder Array-Elemente

Schreibfunktion für Strings(Zeichenketten)   Nach oben

    function writestring(byte eepromaddr, int addr, byte s[]) returns int

Mit dieser Funktionen wird der Inhalt einer Stringvariable in das EEProm
geschrieben. Ein String belegt im EEProm immer 32 Byte.
Kommt es beim Schreibvorgang zu einem Fehler, so wird FALSE (0) zurückgegeben.
Bei erfolgreichem Schreiben der Daten wird True(-1) zurückgegeben.

eepromaddr Baustein-Adresse des EEProms: 0-7 (entsprechend A2-A0)
addr Start-Adresse für die Daten
s[] Referenz für String-Variable
 

Lesezugriff einleiten   Nach oben

    function read(byte eepromaddr, int addr) returns int

Mit read() wird der Lesezugriff eingeleitet. Diese Funktion wird von
allen anderen Lesefunktionen verwendet.
Antwortet das EEprom nach EEwaitLoops Versuchen nicht, gibt die Funktion
False(0) zurück und löst das I²C-Capture. Andernfalls wird True(-1) zurückgegeben und
das I²C-Capture bleibt bestehen.

eepromaddr Baustein-Adresse des EEProms: 0-7 (entsprechend A2-A0)
addr Adresse für die Daten
 

Lesefunktionen für einzelne Werte   Nach oben

    function readbyte(byte eepromaddr, int addr) returns byte
    function readint(byte eepromaddr, int addr) returns int
    function readlong(byte eepromaddr, int addr) returns long

Mit diesen Funktionen werden einzelne Werte aus dem EEProm gelesen und
zurückgegeben..
Bei der Adressierung muß beachtet werden, daß die verschiedenen
Variabeltypen eine unterschiedliche Anzahl an Bytes belegen.
(Byte: 1Byte, Integer: 2Byte, Long: 4Byte)
Reagiert das EEProm bei der Adressierung nicht, wird der Lesevorgang abgebrochen.
Es kann man mit getErr() überprüft werden, ob es einen Fehler gab.

eepromaddr Baustein-Adresse des EEProms: 0-7 (entsprechend A2-A0)
addr Adresse der Daten im RAM
 

Lesefunktionen für Arrays   Nach oben

    function readbytearray(byte eepromaddr, int addr, byte data[], int len)
    function readintarray(byte eepromaddr, int addr, int data[], int len)
    function readlongarray(byte eepromaddr, int addr, long data[], int len)

Mit diesen Funktionen können Arrays (Byte, Integer und Long) aus dem EEProm
gelesen werden.Werte zwischen -32768 und -1 für len werden als
32768 bis 65536 interpretiert.
Es muß darauf geachtet werden, daß das Zielarray mindestens so viele
Elemente enthält, wie für length angegeben.
Kommt es beim Lesevorgang zu einem Fehler, so wird FALSE (0) zurückgegeben,
andernfalls True(-1).

eepromaddr Baustein-Adresse des EEProms: 0-7 (entsprechend A2-A0)
addr Start-Adresse der Daten
data Ziel-Array für gelesene Daten
len Anzahl zu lesende Array-Elemente

Lesefunktion für Strings(Zeichenketten)   Nach oben

    function readstring(byte eepromaddr, int addr, byte s[]) returns byte

Mit dieser Funktionen wird ein String aus dem EEProm ausgelesen und
in der angegebenen Stringvariabel gespeichert.
Es werden immer 32 Byte aus dem EEProm gelesen.
Es wird die Stringlänge zurückgegeben.
Bei einem Fehler wird 0 zurückgegeben.

eepromaddr Baustein-Adresse des EEProms: 0-7 (entsprechend A2-A0)
addr Start-Adresse für die Daten
s[] Referenz für String-Variable



Autor: André Helbig   Mail: andre.h@cc2net.de    Erstellt: 31.7.2003