Da habe ich doch auch gleich noch eine Frage dazu:
Ich möchte in einem Array einige IO-Register ablegen, um über eindeutige
Strings darauf zugreifen zu können. Das sieht dann etwa so aus:
1 | typedef struct ti_register_t {
|
2 | const volatile uint8_t *Register;
|
3 | prog_char Name[TI_REGNAMELEN];
|
4 | } ti_register_t;
|
5 |
|
6 | ti_register_t ti_registers[] PROGMEM = {
|
7 | {PORTA, "porta"},
|
8 | {DDRA, "ddra"},
|
9 | {PINA, "pina"}
|
10 | };
|
Der GCC weigert sich aber, das zu kompilieren, da der Initialisierer
nicht konstant ist ("../src/ti.c:103: error: initializer element is not
constant"). Der Fehler bezieht sich auf PORTA, DDRA und PINA. Was muss
ich da angeben, damit das funktioniert? Die Adressen der Register sind
ja zur Compilezeit bekannt, warum sollte damit keine Initialisierung
möglich sein?