PROGMEM Array vorinitialisieren in Atmel Studio 6

Gast #3470540
Lesenswert?

Hallo,

wollte mir eine Sinus-Lookup-Table im Flash eines Atxmega mittels 
folgender Anweisung ablegen:
1
const int16_t sinus_lu[] PROGMEM ={0,
2
20,
3
40,
4
60,
5
80,
6
100,
7
120,
8
139,
9
...
10
};

Die Liste wurde mit einem Octave-script erzeugt und mittels #include ins 
Programm gehängt.
Mein Problem: offensichtlich steht hinterher im Speicher totaler Müll 
drin, egal ob man einen Watch setzt oder sich den Flash-Speicher im 
Memory-Dump ansieht. Was mache ich falsch?
Angehängte Dateien:
Gast #3472029
Lesenswert?

Ja Du hast Recht, das Array steht nicht an dieser Adresse. Im MAP-File 
findet man die richtige Adresse. Ab 0x178 stehen auch die richtigen 
Daten.

 .progmem.data.sinus_lu
                0x00000178      0x140 src/applic.o
                0x00000178                sinus_lu

Wenn ich mit
1
uint8_t var = pgm_read_word (&sinus_lu[j]);
auf das Array im Programmcode im Flash zugreife lese ich die richtigen 
Daten UND bei einem Break zeigt mir AtmelStudio das Array im Watch an 
der richtigen Adresse mit den richtigen Daten an!

Entferne ich die Zeile, steht die Adresse im Watch für den Array-Begin 
wieder bei 0x0.

Ok, ist ein Bug im AtmelStudio, wenn auch nur ein kleiner.

Vielen Dank für den Hinweis!

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