Forum: Mikrocontroller und Digitale Elektronik Speichermodellproblem?


von Roman (Gast)


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

von Rahul (Gast)


Lesenswert?

Ohne Quelltext wird das schwierig...

von Roland P. (pram)


Lesenswert?

ich tippe mal auf ein Stack / Ram-Problem

von Roman (Gast)


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.

von Roman (Gast)


Angehängte Dateien:

Lesenswert?

Sorry, hatte den Anhang vergessen

von peter dannegger (Gast)


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

von peter dannegger (Gast)


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

von Roman (Gast)


Lesenswert?

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

von peter dannegger (Gast)


Lesenswert?

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


Peter

von Roman (Gast)


Lesenswert?

wo steht da genau was über die speicherauslastung?

von Roman (Gast)


Angehängte Dateien:

Lesenswert?

passt das im txt file?

von peter dannegger (Gast)


Lesenswert?

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


Peter

von Roman (Gast)


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

von peter dannegger (Gast)


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

von Roman (Gast)


Lesenswert?

hab grad ein bisschen aufgeräumt, war wirklich der speicher.. dankesehr!

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.