Forum: Mikrocontroller und Digitale Elektronik Fehlerhaftes RET (msp430)


von Lars (Gast)


Lesenswert?

moinsen,

ich sitz grad vor IAR und kuck blöd aus der wäsche:

Ich habe ein Unterprogramm, welches ich aus einem Sensor ins RAM des 
1611 kopiere und dann ausführe.

von dort aus rufe ich per "call &0x4010" ein Unterprogramm im Flash auf 
(habe über eine Tabelle an dieser adresse stehen, wo das UP liegt).
Das funktioniert auch wunderbar, und das UP löppt.

ABER:
nun kommt am ende des UPs RET, und die kiste springt eben nicht an die 
Adresse, auf die der SP zeigt, sondern unnachvollziehbar an 0x0000
seltsamerweise wird dabei aber der wert der auf dem stack steht um 6 
erhöht.

Hat irgendjemand den effekt schon mal beobachtet?

von Lars (Gast)


Lesenswert?

zur Ergänzung: das Programm liegt im RAM im bereich 0x2d00 (und 
folgende)

von A.K. (Gast)


Lesenswert?

Der SP zeigt nicht auf die Ret-Adresse sondern auf Speicher in der diese 
steht. Aber das klingt so, als ob der SP in den Wald zeigt.

von Lars (Gast)


Angehängte Dateien:

Lesenswert?

hab mal kurzerhand 4 screenshots gemacht:
einer vor dem Aufruf des UPs aus dem Ram, einer direkt danach, einer vor 
dem RET (bei mir steht testweise mov @SP+, PC , aber das macht ja genau 
das gleich (und produziert auch den gleichen fehler...die ruitine wird 
übrigens vorher schon einige male fehlerfrei aufgerufen...fehler 
passiert nur bei nem programmaufruf aus dem RAM)

von Lars (Gast)


Lesenswert?

Hat sich erledigt.
das ganze war ein debugfehler:
IAR (und alle anderen debuger) kann logischerweise keine 
debuginformationen in code einfügern, der von woanders kommt.
Daher wird der code im ram zwar ausgeführt, die ausführung aber nich 
angezeigt.
In meinem Fall war nich der RET das Problem, sondern die Adresse des 
folgenden Calls. da hab ich mich vertippt, und er is wie gewünscht an 
die Adresse 0x0000 gesprungen.

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.