www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik aus struct im Flash lesen


Autor: Waldgichtel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
typedef struct _NMEAFrame{
    char    msgID[6];
    char    numberOfFields;
} NMEAFrame; 

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

Ich habe nun versucht mittels pgm_read_byte diese Konstanten zu lesen:
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

Autor: micro1 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Laszlo H. (mobius)
Datum:

Bewertung
0 lesenswert
nicht 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 ^^).
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

Autor: Waldgichtel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.