mikrocontroller.net

Forum: Compiler & IDEs SprintF und sscanf und das programm wird riesig wieso


Autor: Killer-Loop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also folgende Geschichte wenn ich in meinem Programm ein array in eine 
variable umwandle und diese dann wieder zurück um sie an den usart zu 
schicken wird mein programm gleich 10k groß.
wieso???
und kann ich das irgend wie umgehen zum beispiel mit einer eigenen 
funktion....

ich probier schon selber nen bsichen kriegs aber seit zwei stunden nicht 
wirklich gebacken.

danke schon mal für die antwort

cya

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mach mal ein beispiel? Sind es es float werte die umwandelst?

Autor: Killer-Loop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hoi

  puffer ist mein char array was ich vom usart kriege
        und mit putstring packe ich es wieder auf den usart

        sscanf(puffer, "%d", &test);
  test++;
  putstring("\n\r Berechnete Ausgabe ");
  sprintf(puffer, "%d", test);


danke schonmal

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
verwende mal atoi und itoa das solllte wesentlich sparsarmner sein, aber 
10k kommen mir merkwürdig vor, hast du die optmierung eingeschaltet?

Autor: Matthias K. (matthiask)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>wird mein programm gleich 10k groß

Mehr Details, Programm, µC-Familie?

sprintf usw. verbraucht immer eine Menge Speicher. Manche Compiler 
bringen Small- oder Tiny-Varianten mit. Meist kann man sich zur 
Formatierung aber selber eine optimierte Routine schreiben.

Andererseits, ist freier Speicher = verschenkter Speicher, wenn Du genug 
hast.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Peter schrieb:
> aber
> 10k kommen mir merkwürdig vor

Die CPU hat er ja nicht genannt.
Das wird warscheinlich ein ARM sein, mit 32bit Befehlen kriegt man 10k 
schnell voll.

Auf nem 8051 wäre das natürlich entschieden zuviel, selbst ohne 
Optimierung.


Peter

Autor: Killer-Loop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke für die schnelle antworten also

controller atmega32

programm welches meinst du damit ????

und wo finde ich im programmers notepad die speicheroptimierung ???

ich check das gleich mal mit atoi und itoa

cya

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Killer-Loop schrieb:
> controller atmega32

Linkerschalter:
-lm


Peter

Autor: Killer-Loop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok danke schonmal

ich denke es wird mit atoi und itoa gehen.
lese mich gerade da ein
bekomme es aber noch nicht wirklich gebacken. danke für alles bist jetzt

Autor: Killer-Loop (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für alles ich habs jetzt geschafft.
Macht auch Sinn warum des teil so groß geworden ist.

Ich hab vorhin einfach nur die syntax von atof und atoi verplant.

das mit der speicheroptimierung hat auch gepasst jetzt ist das file 
sogar noch kleiner und ich krieg noch den rest vom projekt in den 
microcontroller.

also nochmal vielen dank

hier noch kurz die syntax falls es nochjemanden giebt der so verplant 
ist wie ich, was ich nicht vermute.

  putstring(puffer);
  test = atoi(puffer);
  test++;
  itoa( test, puffer, 10 );

cya

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias K. schrieb:
> sprintf usw. verbraucht immer eine Menge Speicher.

Der Grund ist, dass sie den Formatstring zur Laufzeit auswerten und
daher alle möglichen Formatierungs-Routinen "vorhalten" müssen, egal,
ob diese am Ende benutzt werden oder nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.