Ich habe eine Frage wie Funktionen eines EEPROMs zu handeln sind.
Ich möchte gerne folgende Funktionen nutzen (WORD sind 16-Bit):
1 | WORD EEPROMReadWord(WORD address)
|
2 | void EEPROMWriteWord(WORD data, WORD address)
|
Ich würde gerne 2 Variabeln vom Typ WORD (natürlich wieder 16-Bit)
speichern und später wieder auslesen. Ich weiss nicht genau wie ich die
beiden Funktionen aufrufen muss, damit Sie wie gewünscht funktionieren.
DIe Funktionen stammen aus einer Std. Lib von einem EEPROM. Ich habe es
mir in etwa wie folgt gedacht:
1 | WORD x,y;
|
2 | x = 100;
|
3 | y = 310;
|
4 | void writeeeprom(unsigned int eeprom_addr)
|
5 | {
|
6 | EEPROMWriteWord(x, eeprom_addr);
|
7 | eeprom_addr = eeprom_addr +2; // weil 16 Bit, also 2mal 8Bit geschrieben // werden und eine Adresse für 1 Byte ????
|
8 | EEPROMWriteWord(y, eeprom_addr);
|
9 | eeprom_addr = eeprom_addr +2;
|
10 | }
|
11 | void readeeprom(unsigned int eeprom_addr)
|
12 | {
|
13 | WORD a,b;
|
14 | a = EEPROMReadWord(eeprom_addr);
|
15 | eeprom_addr = eeprom_addr +2;
|
16 | b = EEPROMReadWord(eeprom_addr);
|
17 | eeprom_addr = eeprom_addr +2;
|
18 | }
|
19 |
|
20 | main.c
|
21 | writeeeprom(0x0000);
|
22 | readeeprom(0x0000);
|
Die Erhöhung der Adresse um 2 dürfte für das Schreiben eines 16-Bit
Wortes richtig sein!? Rufe ich die Funktionen EEPROMWriteWOrd bzw.
EEPROMReadWord richtig auf??? In Beispielen sehe ich oft sowas wie
1 | EEPROMWriteWord(&x,(unsigned char*)eeprom_addr);
|
Korrekturen zu dem konkreten obigen Beispiel würde mir sehr
weiterhelfen.
Gruss