Hallo zusammen,
in einem Projekt soll das EEPROM vorbelegt werden. Dazu wird
EEMEM eingesetzt, was auch ganz gut funktioniert.
Probleme gibt es, wenn eine Struktur initialisiert werden soll.
Dieser Beitrag Beitrag "EEMEM und Strukturen" hilft
leider nicht weiter, da hier zur Initialisierung nicht auf die
Elemente der Struktur zugegriffen wird.
>> myInclude.h
1 | typedef struct
|
2 | {
|
3 | uint8_t a;
|
4 | uint8_t b;
|
5 | } sMyStruct;
|
6 |
|
7 | extern uint8_t fred;
|
8 | extern sNode myList[5];
|
>> myMain.c
1 | #include <avr/eeprom.h>
|
2 | #include "myInclude.h"
|
3 |
|
4 | uint8_t EEMEM fred = 0xFF;
|
5 | sMyStruct EEMEM myList[5];
|
Das compiliert ohne Probleme.
Wenn dann aber eine Initialisierung eingefügt wird
1 | sMyStruct EEMEM myList[5];
|
2 | myList[0].a = 0xAA;
|
gibt der Compiler diesen Fehler aus:
1 | Error 1 expected '=', ',', ';', 'asm' or '__attribute__' before '.' token
|
Wenn das dann in eine Funktion gepackt wird, verschwindet der Fehler
natürlich:
1 | sMyStruct EEMEM myList[5];
|
2 | void myFunc (void) {
|
3 | myList[0].a = 0xAA;
|
4 | }
|
Damit wird die gewünschte EEPROM-Initilisierung zur Compile-Zeit aber
leider nicht erreicht.
Ich würde mich freuen, wenn jemand eine Idee hat. Vielen Dank!
Schöne Grüße
Sören