Konstantes Array

Gast #2777749
Lesenswert?

Hallo, ich möchte gerne ein konstantes array erstellen und die array 
größe und den inhalt durch einzellne defines erstellen.

sollte so aussehen

#define liste 520
#define liste 542
#define liste 650
...

=> int array[3] = { 520, 542, 650 }

es muss jetzt kein define sein. Die liste sollte jedoch im Flashspeicher 
liegen und die werte sollten zur kompilierzeit eingefügt werden. Die 
reihenfolge ist egal. Ist so etwas möglich?

Gruß
Thomas
Persönliche Seite #2777759
Lesenswert?

Je nach verwendetem Controller geht das so:
1
#define liste1 520
2
#define liste2 542
3
#define liste3 650
4
...
5

6
const int array[] = { liste1, liste2, liste3 };

oder so
1
#define liste1 520
2
#define liste2 542
3
#define liste3 650
4
...
5

6
const int array[] PROGMEM = { liste1, liste2, liste3 };

Beim Lesezugriff ist im ersten Falle (von-Neumann) gar nichts zu 
beachten, im zweiten Falle (AVR, Harvard) müssen die progmem-Funktionen 
verwendet werden, siehe 
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Programmspeicher_.28Flash.29
Gast #2777832
Lesenswert?

beim AVR z.B. so:
1
   PROGMEM const uint16_t TestPattern[*] =
2
   {
3
#include "testpat.inc"
4
   };

in "testpat.inc" stehen dann alle Werte mit Komma getrennt.
1
/* 1st sequence */
2
7, 6, 7, 5, 7, 3, 7, 4, 7, 7, 7, 7, 7, 7, 0,
3
/* 2nd sequence */
4
7, 7, 7, 7, 7, 7, 0,
5
/* 3rd sequence */
6
4, 0
Gruß Anja

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren