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


von Hans (Gast)


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

von Marcus M. (marcus67)


Lesenswert?

Es liegt mit Sicherheit an Deinem Code.

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

Gruß, Marcus

von sebastian (Gast)


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?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

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

von Hannes Lux (Gast)


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...

...

von Hans (Gast)


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

von Christian P. (christian_paier)


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.

von Michael U. (amiga)


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

von Läubi .. (laeubi) Benutzerseite


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

von Christian P. (christian_paier)


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.

von mik (Gast)


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?

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.