mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie erkennen ich RAM Mangel?


Autor: Thomas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo eine Frage an die Experten,
ich habe ein größeres Projekt mit AVRGCC auf einem ATMega163 laufen.
Der hat ja bekanntlich 1k RAM. Wie kann ich den sicher sein, das
noch genügend RAM für Stack und Variablen frei ist?

Hintergrund ist, daß ich zur Zeit unerklärliche Phänomene erhalte
wenn ich Variablen oder Codezeilen hinzufüge. Ich vermute Stack
Überlauf oder so etwas ähnliches.

Bin für jeden Tip dankbar.

Autor: Martin de Wendt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

WINAVR zeigt die genaue Benutzung des RAMs usw an.


Martin

Autor: Jens Renner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hatte dieses Phänomen mal bei der Assembler-Programmierung, auch mit
einem 163er.
Ich bemerkte unerklärliche Variablenänderungen, bis ich mal meinen
kompletten Speicherbedarf zusammenrechnete. Zusammen mit
verschachtelten Unterprogrammaufrufen und vielen gepushten Registern
ergab sich dann, dass mir der Stack in meine SRAM-Daten hinein lief.

Wie lässt sich denn bei WinAVR die Speichernutzung anzeigen?

Autor: Martin de Wendt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

das Tool avr-sizex macht das wunderbar.
http://www.kreatives-chaos.com/index.php?seite=avrgcc

Martin

Autor: womisa (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich initialisiere den RAM mit 0xFF und lese ab und zu den Ram über die
ser. Schnittstelle aus, man kann dann die "tiefe" des Stacks
erkennen.

MfG Achim

Autor: Arne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin!

Zwar arbeite ich nicht mit dem AVR, aber warum sollte es damit nicht
auch laufen:

Schreibe in die Speicherzellen vor und nach dem Stack-Bereich eine 00h.
Diese beiden Bereiche regelmäßig auf Änderung prüfen. Bei Veränderung
Programmabbruch und Signalisierung per Display, LED oder was auch
immer.

Ist vielleicht nicht die edelste und sicherste Lösung - hat mir aber
schon oft geholfen...

Gruß,
Arne

Autor: Thomas Jäger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
vielen Dank für eure Antworten. Ich sehe auf jeden Fall, daß es
ein gängiges Problem auf den Mikrocontrollern ist. Ich muß noch dazu
sagen, daß ich kein Programmierfreak bin, sondern alles gerade so
hinkriege, manchmal auch mit hohem Zeitaufwand.

Besonders gut hat mir Martins Link gefallen. Das WINAVR Tutorial
ist einfach schnell und gut. Es würden sicher mehr Leute lesen,
wenn es hier auf den mikroconroller.net Tutorial Seiten zu finden
wäre.

Thomas

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.