Strings aus Flash lesen und ausgeben, mega64 + CodeVision

Gast #522996
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
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

Eine eigene Frage? Dieser Thread ist über 19 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.