stm32f4 FPU global interrupt

Gast #6407487
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.
Gast #6407492
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.
Gast #6407676
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.

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