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
Es liegt mit Sicherheit an Deinem Code. Der Controller hat entweder den vollen Speicher oder er ist schlicht kaputt ... Gruß, Marcus
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?
> Ü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...
...
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
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.
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
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
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.
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.