Forum: Mikrocontroller und Digitale Elektronik AVR Array im Flash lokatiert


von Martin T. (marathon)


Lesenswert?

Hallo,

ich nutze einen ATmega168 und habe ein unerklärliches Fehlerbild.
Ich lokatiere ein Array aus unsigned char ins Flash.
Auszug aus dem c-File:
#include <avr/pgmspace.h>

static unsigned char PROGMEM segIndexPattern[3] = {0x08,0x10,0x20};
....

Im Debugger sehe ich, dass das Array ins Flash lokatiert wurde.
Das Programm liest aber zur Laufzeit Müll aus.
Wenn ich das Array ins RAM lokatiere, funktioniert mein Programm 
einwandfrei.

Hat jemand einen Tipp für mich ?

Gruß Martin

von Johannes M. (johnny-m)


Lesenswert?

Wenn Du ein Array im Flash speicherst, dann musst Du den Funktionen, die 
damit arbeiten sollen, auch mitteilen, dass sie das Array von da holen 
sollen. Und ich vermute, genau das tust Du nicht. Zum Lesen von im Flash 
gespeicherten Daten gibt es z.B. (ebenfalls in der pgmspace.h) spezielle 
Funktionen --> Doku lesen...

von Bingo (Gast)


Lesenswert?

Brauchst du die  pgm_read_byte() , zum lehsen die data (bytes) von 
progmem.

Guch mahl hier
http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&t=38003

/Bingo Dänemark

von Martin T. (marathon)


Lesenswert?

Auslesen mit pgm_read_byte(...
funktioniert.
Wieder was gelernt

Danke für die Hinweise
Martin

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.