Forum: Mikrocontroller und Digitale Elektronik stm32f4 FPU global interrupt


von stm32f4 FPU global interrupt (Gast)


Lesenswert?

Hi,

arbeitet ihr mit dem FPU global interrupt bei STM(F4) Mikrocontrollern?

Teilt man z.B. 1.0f/0.0f, dann wird bei mir (stm32f407) der FPU global 
interrupt pending bit (81) gesetzt. So weit so gut.

Nun ist mir aufgefallen:
- Es werden gleichzeitig ISPR und ICPR gesetzt (jeweils bit 81)
- Pending bit kann nicht zurückgesetzt werden über ICPR
- Wird der Interrupt aktiviert landet man im Handler und kommt nicht 
mehr heraus.

Ist das wirklich so gewollt und wo ist das beschrieben?
Im Programming manual gibt es keine Ausnahmen bzgl. nicht 
zurücksetzbarer Pending Bits.

von Programmierer (Gast)


Lesenswert?

stm32f4 FPU global interrupt schrieb:
> - Wird der Interrupt aktiviert landet man im Handler und kommt nicht
> mehr heraus.

Kann es sein dass nach dem Interrupt die fehlerhafte Instruktion direkt 
nocheinmal ausgeführt wird? Vermutlich musst du in der ISR die 
Rücksprungadresse auf dem Stack manipulieren um woanders hinzuspringen. 
Das Programm einfach "normal" weiter laufen zu lassen macht ja sowieso 
wenig Sinn.

von stm32f4 FPU global interrupt (Gast)


Lesenswert?

NaNs können schonmal auftreten.. das Pending Bit wird anscheinend auch 
gesetzt wenn man einen float in einen int außerhalb des Wertebereichs 
des int wandelt.

Der Code läuft normal weiter wenn Interrupt deaktiviert ist, sowas hatte 
ich bisher nie beachtet, ist mir jetzt nur zufällig aufgefallen.

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.