EEPROM.C2
V2.5 - Hilfe
EEPROM2K.C2 V1.3 - Hilfe
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
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 |
Funktionen:
Initialisierung des EEProms (nur eeprom.c2) Nach oben
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() 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 www.cc2net.de
Erstellt: 19.4.2009