Forum: Mikrocontroller und Digitale Elektronik aus struct im Flash lesen


von Waldgichtel (Gast)


Lesenswert?

Guten Abend zusammen,

ich versuche vergeblichst mittels pgm_read_byte Werte aus einem Struct, 
das im Flash liegt zu lesen.

So sieht mein struct aus:
1
typedef struct _NMEAFrame{
2
    char    msgID[6];
3
    char    numberOfFields;
4
} NMEAFrame;

Jetzt soll es später eine Liste von Konstanten Einträgen dieses Typs 
geben. Dazu:
1
 const NMEAFrame Frame_GPGGA PROGMEM ={
2
     "$GPGGA",
3
     14
4
 };
5
  
6
 const NMEAFrame* supportedNMEAFrames[] PROGMEM ={
7
     &Frame_GPGGA
8
 };

Ich habe nun versucht mittels pgm_read_byte diese Konstanten zu lesen:
1
test = (char)pgm_read_byte(&(supportedNMEAFrames[0]->msgID[0]));

Der Compiler gibt mir keinen Fehler aus ... allerdings steht in test nun 
auch kein $ :/

Kann mir hier jemand weiterhelfen?

Toni

von micro1 (Gast)


Lesenswert?

Hi,

worher willst du wissen das kein $ drin steht?
Hast du mal versucht ohen zusätzlich ePointer Variabel  zu lesen?
Was steht dann drin?

von Laszlo H. (mobius)


Lesenswert?

Preisfrage, wo liegt das Zeiger-Array supportedNMEAFrames? Im Flash! Das 
heißt, du musst genauso wie auf die Variable Frame_GPGGA auch mittels 
pgm_read_byte zugreifen (ansonsten liest du aus dem RAM-Bereich, wo was 
ganz anderes steht ^^).
1
test = (char)pgm_read_byte(&(pgm_read_byte(&supportedNMEAFrames[0])->msgID[0]));

Oder aber du legst das Zeiger-Array in den RAM (sind nur 2 bytes / 
Eintrag).

gruß
Mobius

von Waldgichtel (Gast)


Lesenswert?

Besten Dank für die schnelle Antwort.

So hats nu funktioniert ... irgendwie wars doch zuviel im flash, da hab 
ich den Überblick verloren.

Schönen Abend noch.

Toni

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.