Interrupt disabled - Flags

#5049386
Lesenswert?

Peter II schrieb:
> Bernie schrieb:
>> Bin mir diesbezüglich nicht sicher, ob das wirklich so ist.
>
> und sollen wir jetzt raten um welchen Controller es geht?

Wahrscheinlich um einen AVR

Bernie schrieb:
> Werden eigentlich die Flags auch gesetzt, wenn die Interrupts disabled
> sind? Bin mir diesbezüglich nicht sicher, ob das wirklich so ist.

Ich meine Ja, der Interruptvektor wird halt nur angesprungen wenn auch 
das entsprechende Enable-Flag gesetzt ist. Wir reden doch über AVRs, 
oder?
Gast #5049463
Lesenswert?

Ich gab stm32 ein und dieses Forum kam heraus. Dachte dies wäre klar und 
wusste nicht, dass es Controllerabhängig ist.
Ich spreche generell über stm32 uC.
Das heisst also, die Flags werden zwar gesetzt, aber in den 
Interruptvektor wird nur gesprungen, wenn auch der Interrupt enabled 
ist?
Danke
Gast #5049501
Lesenswert?

Dr. Sommer schrieb:
> Es werden die Flags in der Peripherie gesetzt, aber nicht die
> "Pending" Flags im NVIC. Erstere kann man dann manuell abfragen.
PS: Das gilt natürlich nur wenn nur der eine Interrupt abgeschaltet 
wurde... Wenn der immer noch an ist (im NVIC), aber man alle Interrupts 
global abgeschaltet hat (über "cpsid i"), werden auch die Pending Flags 
im NVIC gesetzt. Sobald man die Interrupts wieder eingeschaltet ("cpsie 
i") hat, werden die ISR's angesprungen.
Gast #5050332
Lesenswert?

Dr. Sommer schrieb:
> Dr. Sommer schrieb:
> Es werden die Flags in der Peripherie gesetzt, aber nicht die
> "Pending" Flags im NVIC. Erstere kann man dann manuell abfragen.
>
> PS: Das gilt natürlich nur wenn nur der eine Interrupt abgeschaltet
> wurde... Wenn der immer noch an ist (im NVIC), aber man alle Interrupts
> global abgeschaltet hat (über "cpsid i"), werden auch die Pending Flags
> im NVIC gesetzt. Sobald man die Interrupts wieder eingeschaltet ("cpsie
> i") hat, werden die ISR's angesprungen.

Danke an Sommer und Koehler ??
#5050409
Lesenswert?

In gefühlt jedem DB steht doch sinngemäß drin:
"wenn du Int-Enable-x setzt, dann sorg dafür, daß du vorher Int-Flag-x 
ge-cleared hast, oft durch reinschreiben von "1", denn sonst feuert der 
Int-x sofort."
Ist ja auch schwer anders vorstellbar, wenn man davon aus geht, daß 
Chip-Hersteller nur nur ungern extra Silizium verbraten, um HW für etwas 
zu bauen (Flankenerkennung), was man zu 99.99999% der Zeit nicht 
braucht, und wenn, einfach durch eine Zeile Software erledigt werden 
kann.

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