Forum: Mikrocontroller und Digitale Elektronik Zeitkritische Interrupts STM32


von Student (Gast)


Lesenswert?

Guten Tag,

Hätte eine Frage zu Interrupts. Wenn die Rede von zeitkritischen 
Interrupts ist, bedeutet das doch, dass die Priorität des Interrupts am 
höchsten bzw hoch ist. Bei dem STM32 gibt es einen NVIC, bei dem man die 
Priorität von Interrupts angegeben werden kann. Bin ich da Richtig?

Grüße

von Stefan F. (Gast)


Lesenswert?

Ich glaube nicht, dass die Bedeutung des Wortes "zeitkritische 
Interrupts" klar definiert ist.

Du meinst damit vielleicht einen Interrupt, der möglichst zeitnah 
ausgeführt werden soll. Ich könnte mich darunter aber auch 
Interrupthandler vorstellen, die Fast 100% der CPU Zeit in Anspruch 
nehmen und deswegen kritisch sind.

von John P. (brushlesspower)


Lesenswert?

Student schrieb:
> Bei dem STM32 gibt es einen NVIC, bei dem man die
> Priorität von Interrupts angegeben werden kann. Bin ich da Richtig?

Ja, wenn sich der MCU in einem interrupt niedriger Priorität befindet 
kann er von einem weiteren Interrupt mit höhere Priorität unterbrochen 
werden.

von Jim M. (turboj)


Lesenswert?

Student schrieb:
> Wenn die Rede von zeitkritischen
> Interrupts ist

... hat der Redner keinen blassen Schimmer von der Materie. Denn 
Interrupts sind immer zeitkritisch - sonst würde man das in der 
Hauptschleife mit erledigen.

Die NVIC Prioritäten braucht man wenn man verschiedene Levels von 
"zeitkritisch" hat.

Beispiel NordicSemi NRF5x: Bluetooth Radio Interrups sind auf wenige us 
kritisch, und müssen dann zum Beipiel den UART Interrupt Handler (100us 
oder mehr) unterbrechen können.

von Mathias _. (mathias1988)


Lesenswert?

John P. schrieb:
> Ja, wenn sich der MCU in einem interrupt niedriger Priorität befindet
> kann er von einem weiteren Interrupt mit höhere Priorität unterbrochen
> werden.

Mit der Aussage muss man denk ich vorsichtig sein. Es gibt bei den STM32 
eine "Preemtion Priority" und eine "Sub Priority". Bei ersterem stimmt 
deine Aussage, bei "Sub Priority" meines wissens nicht.

Als Beispiel:

TIM 1: 0, 1
TIM 2: 0, 0

Werden beide gleichzeitig ausgelöst, bekommt TIM 2 den vortritt. Wenn 
der Callback von TIM1 bereits läuft und dann TIM2 triggert, dann muss er 
warten bis der Callback von TIM1 fertig ist.

@Student lies dich am besten erst einmal ein ;-)
https://www.st.com/content/ccc/resource/training/technical/product_training/group0/0e/7d/62/5c/68/35/4c/fe/STM32G0-System-Nested-Vectored-Interrupt-Control-NVIC/files/STM32G0-System-Nested-Vectored-Interrupt-Control-NVIC.pdf/_jcr_content/translations/en.STM32G0-System-Nested-Vectored-Interrupt-Control-NVIC.pdf

VG,
Mathias

von Marcus H. (Firma: www.harerod.de) (lungfish) Benutzerseite


Lesenswert?

Student schrieb:
> Guten Tag,
>
> Hätte eine Frage zu Interrupts. Wenn die Rede von zeitkritischen
> Interrupts ist, bedeutet das doch, dass die Priorität des Interrupts am
> höchsten bzw hoch ist. Bei dem STM32 gibt es einen NVIC, bei dem man die
> Priorität von Interrupts angegeben werden kann. Bin ich da Richtig?

NVIC ist schonmal ein guter Ansatz. Die verschiedenen Varianten F0/F1/F4 
unterscheiden sich ein wenig in der möglichen Konfiguration, aber das 
Prinzip bleibt ähnlich.

Der NVIC gehört zum CPU-Teil, ist daher Teil der ARM-Core-Doku. Beim M4 
z.B. im Dokument
PM0214
Programming manual
STM32F3 Series, STM32F4 Series, STM32L4 Series and
STM32L4+ Series Cortex ® -M4 programming manual


Oder für die Nuller:
PM0215
Programming manual
STM32F0xxx Cortex-M0 programming Manual

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.