Forum: Mikrocontroller und Digitale Elektronik String im Flash speichern


von Gast (Gast)


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

von Karl H. (kbuchegg)


Lesenswert?


von Gast (Gast)


Lesenswert?

danke sehr Karl

von Gast (Gast)


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

von Karl H. (kbuchegg)


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

von Gast (Gast)


Lesenswert?

welche Zeile 42?

von Karl H. (kbuchegg)


Lesenswert?

Gast schrieb:
> welche Zeile 42?

Ist ganz einfach.
Wenn in Code den nur du sehen kannst, wir aber nicht, ein fehlerhaftes 
Verhalten auftritt, dann ist der Fehler immer in Zeile 42.

Ist ein Naturgesetz :-)

von Gast (Gast)


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"

von Stefan E. (sternst)


Lesenswert?

%d ist der Platzhalter für eine Zahl, nicht für einen String.

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.