MSP430 aus Statusregister Hilfe!

Gast #6421970
Lesenswert?

Hallo Leute,
ich bin Anfänger in der Programmierung und lerne gerade mit MSP430 
launchPad und versuche ich zu verstehen:
weshalb der Wert des Statusregisters des MSP430 bei jedem Sprung in eine 
Interrupt Service Routineauf den Stack gerettet werden  muss, und 
weshalb  dies  nicht  bei  jedem  Sprung  in  ein  Unterprogramm 
notwendig ist.

Herzlichen Dank erst einmal.
Beste Grüße
Gast #6421994
Lesenswert?

Barel S. schrieb:
> weshalb der Wert des Statusregisters des MSP430 bei jedem Sprung in eine
> Interrupt Service Routineauf den Stack gerettet werden  muss,

Du springst nicht in eine ISR, der Prozessor macht das, und resettet 
dabei das Interrupt Enable Bit (GIE):
https://e2e.ti.com/support/microcontrollers/msp430/f/166/t/368459?Interrupt-Processing-Status-Register-Behavior
GIE spielt bei normalen Funtionsaufrufen keine Rolle.

leo
#6422017
Lesenswert?

Dadurch werden die im Statusregister befindlichen Flag gesichert und 
nach der Rückkehr aus der Interruptroutine wieder hergestellt.

Beispiel : es könnte sein, dass im unterbrochenen Programm gerade eine 
Addition durchgeführt wird und das Überlaufflag im SR gesetzt wurde. In 
der Interruptroutine wird das Uberlauffag von dieser auch benutzt und 
dabei zurück gesetzt. Wird die Interruptroutine beendet, dann würde ohne 
Restaurierung des SRs die Addition mit einem falschen Übertrag 
fortgesetzt werden. Das gilt ach für die anderen Inhalte des SRs. Das 
"User Manuel" macht schlau.
#6422382
Lesenswert?

Du musst das Statusregister sichern, weil der Interrupt jederzeit im 
normalen Programmablauf stattfinden kann. Dann würden wie Gerald K. 
schon schreibt ggf. die Flags durch die ISR zerstört.

Bei einem normalen Sprung in ein Unterprogramm ist das nicht nötig, da 
der Compiler hier weiß, dass das Statusregister verändert wird und er 
sich demzufolge nach der Rückkehr aus dem Unterprogramm nicht auf 
irgendwelche Flags verlassen darf.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren