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
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
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.
leo schrieb: > Du springst nicht in eine ISR, der Prozessor macht das, und resettet > dabei das Interrupt Enable Bit (GIE): Das wird gemacht um zu verhindern, das Interrupts automatisch durch weitere Interrups unterbrochen werden können. Will man das zulassen, dann muss man das GIE Flag in der Interruptroutine setzten.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.