mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Speichermodellproblem?


Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe als Schulprojekt ein Steuerungssystem welches Schaltbefehle
über SMS bekommt entworfen, und habe nun ein Problem. Ich habe eine
Unterfunktion entworfen welche eine Antwort-SMS erstellt. Kompilieren
ging ohne Probleme, nur wenn ich das Hex File auf den Controller brenne
(AT89S8252) tut sich gar nichts mehr.. jetz hab ich Zeile für Zeile und
Schleife für Schleife im Unterprogramm auskommentiert.. und
nacheinander immer wieder eine Schleife mehr eingefügt.. ging bis zu
einer ganz normalen For-Schleife gut.. dann ging wieder nichts mehr..
Testweise hab ich dann das Speichermodell von Large auf Compact
gestellt - und nun ging es auch mit dieser For-Schleife.. aber nur
solange bis ich die nächste Schleife wieder eingefügt habe..

Der gleiche Effekt tritt auf wenn ich die Unterprogramme für das
Auslesen eines DS1621 in mein Projekt einbinde - kompilieren geht ohne
Probleme, aber nachdem ichs ins System gebrannt habe geht gar nix
mehr..

Kann mir jemand sagen woran das liegt? Bin mit meinen Überlegungen
komplett am Ende..

Noch ein paar Details zu meinem Projekt:
AT89S8252
Quarz:22,1184MHz
Programmiert mit PonyProg über SPI
Entwickelt in Keil µVision 2

mfg Roman

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne Quelltext wird das schwierig...

Autor: Roland Praml (pram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich tippe mal auf ein Stack / Ram-Problem

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
konkret handelt es sich um die Funktion void sms_status(void) => da
sieht man eh das der größte Teil auskommentiert ist. Temp.c enthält die
Funktionen für den Temperatursensor.

Autor: Roman (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, hatte den Anhang vergessen

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du solltest Dich mal über die Speichermodelle informieren (C51-Primer
lesen !).

Was hast Du denn gegen das default Speichermodell Small ?

Bei 8051 ohne extern angeschlossenen SRAM mußt Du Small nehmen und
nichts anderes.

Und bei 8051 mit internem XRAM mußt Du den im Startup.A51 auch
enablen.


Peter

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
P.S.:

Large heißt nicht nur, ich will verschwenderisch mit globalen Variablen
umgehen und ineffizient programmieren, sondern es muß überhaupt erstmal
viel externer SRAM angeschlossen sein !


Peter

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sorry hab in meinem stress das speicher modell mit der code rom size
vertauscht.. memory modell is eh small..

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was sagt denn das *.m51-File über die Speicherauslastung (habe keinen
RAR-Betrachter) ?


Peter

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo steht da genau was über die speicherauslastung?

Autor: Roman (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
passt das im txt file?

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
SRAM sieht o.k. aus, aber Flash ist ja fast voll, nur 7 Byte frei.


Peter

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das würde natürlich erklären warum das ding nichts mehr tut wenn ich den
tempsensor reinprogrammier..
d.h. ich sollte mal das ganze projekt auf weniger speicher
optimieren..
woran siehst du eigentlich das schon so viel voll is? ich blick im
*.m51 file gar ned durch..

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
8kB sind 1FFFh und am Ende bist Du bei CODE: 1FF6H + 0003H.

Der SRAM ist am Ende bei IDATA: 00CEH, d.h. da sind noch 50 Bytes für
den Stack übrig, das sollte reichen.


Peter

Autor: Roman (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab grad ein bisschen aufgeräumt, war wirklich der speicher.. dankesehr!

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.