Forum: Mikrocontroller und Digitale Elektronik MSP430 ISR unterbrechen


von Thomas (Gast)


Lesenswert?

Hallo zusammen,
ich habe folgendes Problem Eine TRIGGER_ISR ladet einen Timer, welcher
dann in einer TIMER_ISR ein Bit toggelt. Nur es kann passieren dass die
TRIGGER_ISR und die TIMER_ISR fast gleichzeitig ausgelösst werden, wenn
die TIMER_ISR die "erste" ist ist das kein Problem, allerdings wenn
die TRIGGER_ISR zuerst ausgeführt wird verschiebt sich der TIMER_ISR um
die Runtime der TRIGGER_ISR. Kann ich irgendwie dem MSP sagen er darf
die TRIGGER_ISR unterbrechen? um dann die TIMER_ISR zu starten?

gruss Thomas

von Christian R. (supachris)


Lesenswert?

meines Wissens geht das nicht, da der externe Trigger eine höhere
Priorität als der Timer-Trigger hat. Somit muss der Timer warten, bis
der Port-Trigger fertig ist.

Lösungsansatz: In der Trigger-ISR ab und zu das Timer-Interrupt-Flag
pollen und entsprechend reagieren.

von arc (Gast)


Lesenswert?

> Kann ich irgendwie dem MSP sagen er darf die TRIGGER_ISR
> unterbrechen? um dann die TIMER_ISR zu starten?

Das GIE-Flag in der Trigger-ISR wieder einschalten (_EINT() beim
IAR-Compiler bzw. bis #GIE, sr)

von Thomas (Gast)


Lesenswert?

Super, danke funktoiniert,

ich habe zuerst vergessen das Interruptflag 0 zu setzten, und habe die
globelen Interrupts vorher wieder eingeschalten.

Gibt es eigentlich eine möglichkeit nur eine art (timer) interrupt in
er anderen ISR zuzulassen, ich habe es jetzt so gemacht, dass ich alle
anderen interrupts deaktiviere und dann dien globalen setzte, das
dürfte die einzige köglichkeit sein oder?

gruss Thomas

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.