www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AT90S2333: SRAM wird unerwartet gelöscht


Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

hier mal wieder was für die Kuriositäten Sammlung:
Ich verwende eine at90s2333 um über die serielle Schnittstelle Daten 
einzulesen und diese dann im SRAM zu speichern. Beim Speichervorgang 
passiert es nun ab und zu (völlig willkürlich) das Teile des Speichers, 
die ich überhaupt nicht bearbeite, gelöscht werden...

Ist das Teil kaputt??

Gruß,
Daniel

Autor: Schmittchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wahrscheinlicher ist ein Programmfehler. Beachte auch, dass der Stack im 
SRAM liegt und sich nicht mit dem von dir genutzten Bereich 
überschneidet.

Schmittchen.

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm..
Der Stackpointer liegt am Ende des Speicherbereichs. Ich nutze momentan 
die ersten 32 Byte des Speichers für meine Werte. Wenn ich immer nur 
eine Routine auf einmal aufrufe sollte der Stackpointer kaum so groß 
werden, oder? Das Witzige ist ja das es in der Simulation wunderbar 
funktioniert.

Autor: Schmittchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> nur eine Routine auf einmal aufrufe sollte der Stackpointer kaum so groß werden, 
oder?
richtig - normalerweise nicht.

Poste doch mal deinen Code (falls sehr groß, dann als Anhang) - dann 
kann man evtl. genaueres sagen und nicht nur rumraten.

Vielleicht trat das Problem nur in der Simulation noch nicht auf.

Schmittchen.

Autor: Erwin Stache (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn Du mit push und pop arbeitest, dann bitte genau darauf achten, daß 
auch alles "gepushte" wieder "gepopt" wird, sonst läuft der SRAM voll. 
Dies ist in der Simulation kaum zu bemerken.
Oder -- mal das Ende des SRAM in der Simulation beobachten

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, es funktioniert inzwischen...

Danke an Schmittchen und Erwin!
Ich habe die Interrupt Routine mit RJMP anstatt mit RETI verlassen, 
deswegen wurde die "gepushte" Rücksprungadresse nicht mehr "gepopt" und 
das SRAM ist vollgelaufen.

Dankeschön und Servus!

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.