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

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.