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
AVR?
1 | snprintf_P( tempstr, BUFFER_SIZE-1, PSTR("Receive %d voltage of channel 0"), Voltages[0]); |
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Strings_lesen http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Vereinfachung_f.C3.BCr_Zeichenketten_.28Strings.29_im_Flash
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
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 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 :-)
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"
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.