EEPROM Block Access funktioniert nicht

Gast #4489441
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe ein Problem mit dem Verständnis der Funktion 
"eeprom_read_block" und "eeprom_write_block". Ich muss eine Struktur ins 
EEPROM schreiben und rauslesen. Einzelne Bytes ins EEPROM schreiben hat 
bei mir funktioniert, aber ich glaube ich habe den Syntax noch nicht 
ganz verstanden um einen ganzen
Block (struct) zu schreiben:

So sieht mein Programm aus.
1
typedef struct {
2
  int8_t unused;
3
  int8_t csCalbOUT1;  
4
  int8_t csCalbOUT2;  
5
  int8_t csCalbOUT3;  
6
  int8_t csCalbOUT4;  
7
  int8_t csCalbOUT5;  
8
  int8_t csCalbOUT6;  
9
  int8_t csCalbOUT7;  
10
  int8_t csCalbOUT8;  
11
  int8_t csCalbOUT9;  
12
  int8_t csCalbOUT10;  
13
  int8_t csCalbOUT11;  
14
  int8_t csCalbOUT12;  
15
  int8_t csCalbOUT13;  
16
  int8_t csCalbOUT14;  
17
  int8_t csCalbOUT15;  
18
  int8_t csCalbOUT16;  
19
  int8_t TOffset;    
20
} eeprom_calbData;
21

22
eeprom_calbData EEMEM;
23

24
int8_t  CalbData[18];
25

26
int main(void)
27
{   
28

29
    eeprom_read_block(&CalbData, eeprom_calbData, sizeof(CalbData));
30

31
    while(1)
32
    {
33

34
         //Programm
35
    }
36
}

Ich bekomme folgende Fehler raus wenn ich kompiliere:
1. too few arguments to function 'eeprom_read_block'
2. expected expression before 'eeprom_calbData'

Ich habe schon unzählige Sachen ausprobiert aus dem GOOGLE leider ohne 
Erfolg.
Kann mir einer Helfen?

Grus Stefan
Moderator Persönliche Seite #4489558
Lesenswert?
• ▲
▼
Stefan schrieb:
> So sieht mein Programm aus.

Das Programm ist unvollständig. Keine Includes drin? Ohne klappts auf 
keinen Fall.

> [CODE]typedef struct {
> } eeprom_calbData;
>
> eeprom_calbData EEMEM;
>
> int8_t  CalbData[18];

Ungünstig, einmal eine Struct und andermal ein Array zu nehmen. Halte 
die Typen sowohl im RAM als auch im EEPROM gleich, sonst ist Ärger 
vordefiniert.

> Ich bekomme folgende Fehler raus wenn ich kompiliere:
> 1. too few arguments to function 'eeprom_read_block'

In Zeile 1 steht kein eeprom_read_block.

> 2. expected expression before 'eeprom_calbData'

In Zeile 2 steht kein eeprom_calbData.

> Kann mir einer Helfen?

Poste vollständigen_ Code und _vollständige Fehlermeldungen.

Mit Deinen Fitzeln kann man recht wenig anfangen - leider. Welcher µC, 
welcher Compiler?
#4489575
Lesenswert?
• ▲
▼
Das Problem ist denke ich nicht der unvollständige Code, sondern hier 
fehlt es an schlichten C Grundlagen.
Variabeln, Adressen und Datentypen werden wild gemischt oder 
gleichgesetzt. So wird das nichts.

> Ich habe schon unzählige Sachen ausprobiert aus dem GOOGLE leider ohne

Weniger ausprobieren und mehr nachdenken und verstehen wäre angesagt.
Eigentlich enthält jede relevante Zeile mindestens einen Fehler.

So würde ein korrektes Beispiel aussehen:
1
typedef struct {
2
  int8_t unused;
3
  int8_t csCalbOUT1;  
4
  int8_t csCalbOUT2;  
5
  int8_t csCalbOUT3;  
6
  int8_t csCalbOUT4;  
7
  int8_t csCalbOUT5;  
8
  int8_t csCalbOUT6;  
9
  int8_t csCalbOUT7;  
10
  int8_t csCalbOUT8;  
11
  int8_t csCalbOUT9;  
12
  int8_t csCalbOUT10;  
13
  int8_t csCalbOUT11;  
14
  int8_t csCalbOUT12;  
15
  int8_t csCalbOUT13;  
16
  int8_t csCalbOUT14;  
17
  int8_t csCalbOUT15;  
18
  int8_t csCalbOUT16;  
19
  int8_t TOffset;    
20
} eeprom_calbData;
21

22
eeprom_calbData CalbDataEEPROM EEMEM;
23

24
eeprom_calbData CalbData;
25

26
int main(void)
27
{   
28

29
    eeprom_read_block(&CalbData, &CalbDataEEPROM, sizeof(eeprom_calbData));
30

31
    while(1)
32
    {
33

34
         //Programm
35
    }
36
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.