mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Speicher auf ATmega32 läuft über


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guen Abend Comm,
ich programmiere zur Zeit an enem ATmega32.
Siet zwei Sunden ist mir aufgefallen, dass der belegte Speicher auf dem 
Mega32 über 15% liegt, dann hab ich eine float Variable entfernt, die in 
meinem Code stand, da ich weiß dass diese ganz schön Platz auf dem 
Controller brauchen. Siehe da der belegte Speicher schrumpfte auf ca. 4% 
, so wie vorher eigentlich! Nun ist das schon wieder so, aber diesesmal 
hab ich ganz sicher keine float Variable in meinem Code, aber der Platz, 
wird trozdem wieder weniger.
Kann es sein, dass es bei zu oftem Programmieren zu einer 
Speicherreduzierung kommen kann, da im Datenblatt etwas von 10.000 mal 
beschreibbar steht. Dass es sich so langsam abbaut? Ich habe den 
Controller seit ca. einem Monat und programmier an diesem jeden Tag aber 
dass es jetzt  so schnell geht.
Es kann sein dass es an meinem Code liegt, doch diesen hab ich mehrere 
male überprüft, und nichts gefunden.

Guten Abend noch und schöne Pfingsten

Hans

Autor: Marcus Müller (marcus67)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es liegt mit Sicherheit an Deinem Code.

Der Controller hat entweder den vollen Speicher oder er ist schlicht 
kaputt ...

Gruß, Marcus

Autor: sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie hast du das mit den 15 % bzw. 4 % festgestellt?

Map File gecheckt?

Oder wie sonst?

Ansonsten mal den Stack überprüft, ob der evtl. überläuft?

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Übrigens gibts kein Geld für nicht genuzten Speicher zurück ;)

Autor: Hannes Lux (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Übrigens gibts kein Geld für nicht genuzten Speicher zurück ;)

Das ist aber noch lange kein Grund, ihn sinnlos zu verquasen... ;-)

Frohen Rest vom Pfingstfest...

...

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lol nee ich hab in meinem Compiler halt unten nach dem kompilieren steht 
das ja dran, und da stand das:

Program:    3464 bytes (10.6% Full)
(.text + .data + .bootloader)


;) Geld für nicht belegten speicher, der war gut :D:D:D

Autor: Christian Paier (christian_paier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hans schrieb:
> Lol nee ich hab in meinem Compiler halt unten nach dem kompilieren steht
> das ja dran, und da stand das:
>
> Program:    3464 bytes (10.6% Full)
> (.text + .data + .bootloader)

Was sebastian (Gast) mit "Wie hast du das festgestellt?" meinte ist eben 
genau das. Der Compiler hat keine Ahnung wie viel Speicher dein ATMEGA32 
wirklich hat. Davon abgesehen das er nach ein paar mal beschreiben 
sicher nicht weniger wird.

Der Prozentwert wird berechnet in dem er davon ausgeht das er 32KB hat. 
Der Fehler muss also in deinem Code liegen.

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

irgendwas verstehe ich jetzt nicht:
bei meinen AVR wird der Speicher auch immer voller, wenn ich mehr in 
mein Programm schreibe.

Oder wie ist die "Frage" gemeint???

Gruß aus Berlin
Michael

Autor: Läubi .. (laeubi) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hannes Lux schrieb:
>> Übrigens gibts kein Geld für nicht genuzten Speicher zurück ;)
>
> Das ist aber noch lange kein Grund, ihn sinnlos zu verquasen... ;-)
>
> Frohen Rest vom Pfingstfest...
>
> ...
Nein das nicht aber sich in einem Stadium wo der Flash 14% voll ist 
sorgen zu machen wie man ihn weniger stark auslastet weiler "über läuft" 
halte ich doch für arg übertrieben :P

Autor: Christian Paier (christian_paier)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Hans sich nicht sicher ist was bei ihm soviel Speicher frisst 
(Kandidaten sind da Dinge wie Floats, sprintf(), usw.) soll er mal Code 
posten dann können wir ihm schon sagen was am meisten Speicher frisst.

Und das wichtigste hätt ich beinahe vergessen: Welche OPTIMIERUNGSSTUFE 
ist beim Compiler eingestellt.

Und 14% is eh so gut wie nix.

Autor: mik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Christian Paier
Der Compiler weiß nicht wieviel Speicher der MCU hat?
Ich nehm mal an der Output den der OP gepostet hat ist aus 
WIN-AVR/AVR-GCC und da kann/muss man ja im makefile angeben welchen MCU 
man verwendet. Vielleicht guckt der Compiler dort nach und gibt daher 
den richtigen %-Wert an?

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.