String im Flash speichern

Gast #1495733
Lesenswert?

hi,
mein Mikrocontroller besteht aus 4KByte RAM, ich habe ein Programm 
geschrieben beim compilieren habe ich folgende Große:.data = 
1970,und.bss = 2190
ich versuche jetzt Konstante String und Variable im Stack(FLASH) zu 
speichern.
Im Programm habe ich auch viel sprintf benutzt.
Beispiel:  snprintf (tempstr,BUFFER_SIZE-1,"Receive %d voltage of 
channel 0", Voltages[0]);
mit dem sprintf gebe ich den Inhalt des Array aus, aber das 3 dritte 
Argument bleibt unverändbar.
Bitte was kann ich machen um weniger Speicher zu benutzen.

danke euch
Gast #1498193
Lesenswert?

hallo,
ich habe wieder ein Problem. Wie ich schon gesagt habe, versuche ich 
mehr Platz im FLASH zu gewinnen. Am Anfang habe ich diese Größe .data =
1970 jetzt bin ich bei 1575.

Wenn ich versuche mehr String im FLASH zu speichern, bekomme ich 
Probleme beim Auslesen, ich bekomme komische Charakter am Anfang der 
Ausgabe.

Danke
#1498200
Lesenswert?

Gast schrieb:
> hallo,
> ich habe wieder ein Problem. Wie ich schon gesagt habe, versuche ich
> mehr Platz im FLASH zu gewinnen.

Du meinst SRAM

> Wenn ich versuche mehr String im FLASH zu speichern, bekomme ich
> Probleme beim Auslesen, ich bekomme komische Charakter am Anfang der
> Ausgabe.

Der Fehler liegt in Zeile 42
Gast #1498335
Lesenswert?

ok,
das Programm ist nicht gut aufgeräumt. Aber das Problem entsteht, wenn 
das dritte Argument ein Define-String ist.

snprintf_P( tempstr, BUFFER_SIZE-1, PSTR("Receive %d voltage of channel 
0"), G_ERROR);

#define  G_ERROR   "undefined channel"

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren