Strings aus Flash lesen und ausgeben, mega64 + CodeVision

Gast #522996
Lesenswert?
• ▲
▼
Hallo zusammen,

ich habe im Flashspeicher(mega64 + CodeVision) Strings abgelegt, z.B.:

// Deklaration und Initialisierung des Strings
flash char *Di1 = "COptions";


Mit printf möchte ich diese Daten lesen und über RS232 ausgeben, z.B.:

// Deklaration der Funktion
void touch_define(char x1,char y1, char x2, char y2, char dc , char uc , 
char flash *str)

// Definition der Funktion
void touch_define(char x1,char y1, char x2, char y2, char dc , char uc , 
char flash *str)
{
printf("%c%c%c%c%c%c%c%c%c%s%c", ESC,'A','T',x1,y1,x2,y2,dc,uc,str,0);
}

// Funktionsaufruf
touch_define(127,107,182,127,253,0,Di1);  // Options

Leider wird der String 'Di1' nicht übertragen.

Gibt es da eine Erklärung für?  Vielen Dank!

Heiner




#523060
Lesenswert?
• ▲
▼
Bei einem AVR wird vom Flash anders gelesen als vom normalen
SRAM.
Wenn du den Pointer auf den String an printf übergibst, hat
printf keine Möglichkeit mehr festzustellen, ob dieser
Pointer ins Flash oder ins SRAM zeigt. Dein printf geht
wohl davon aus, dass ein mittels %s angekündigter Pointer
ein Pointer ins SRAM ist.

Durchforste mal deine Compiler Doku. Ev. gibt es für
Flash-Pointer ein anderes Formatierzeichen als %s.
Ansonsten bleibt dir nur der Weg, den String zunächst
vom Flash ins SRAM zu kopieren und die Ausgabe dann von
dort zu machen.

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.