Eeprom.c2

Aus CC2Net.de Wiki
Wechseln zu: Navigation, Suche

EEPROM.C2 V2.5, EEPROM2K.C2 V1.3


Inhaltsverzeichnis

Beschreibung

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

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

const Pagewrite = 32;//in Byte; siehe EEProm-Datenblatt Diese Konstante existiert nurnoch in eeprom2k.c2 In eeprom.c2 wird dieser Wert über die Funktion init() für jedes EEProm seperat vorgegeben. Somit kann bei Nutzung unterschiedlicher EEProms jedes optimal genutzt werden. 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 EEwaitTime =  1;//Wartezeit nach erfolglosem Adressierversuch in ms
const EEwaitLoops=100;//Max.Anzahl der Adressierversuche.

Funktionen

Initialisierung des EEProms (nur eeprom.c2)

   function init(byte eepromaddr, byte Pagesize)

Mit diesen Funktionen wird die Pagegröße des jeweiligen EEProms an der angegebenen Adresse bestimmt. Diese Funktion muß vor dem ersten Zugrifff einmalig aufgerufen werden.

eepromaddr 	Baustein-Adresse des EEProms: 0-7 (entsprechend A2-A0)
Pagesize 	Pagegröße des EEProms in Byte

getErr()

   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

   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

   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

   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)

   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

   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

   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

   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)

   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
Meine Werkzeuge