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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.