Embedded systemen en firmware
Bij een microcontroller waarbij interrupts een prioriteit kunnen krijgen, treedt een interrupt met hoge prioriteit op tijdens de uitvoering van de handler van een interrupt met lage prioriteit. Wat gebeurt er gewoonlijk (uitgaande van een instelling die nesten van interrupts toestaat)?
- ADe lage handler wordt onderbroken en de hoge handler wordt uitgevoerd, waarna wordt teruggekeerd naar de rest van de lage handler
- BDe hoge interrupt wordt genegeerd tot de lage handler klaar is
- CBeide handlers worden tegelijk parallel uitgevoerd op dezelfde CPU
Antwoord en toelichting tonen
Antwoord: A. De lage handler wordt onderbroken en de hoge handler wordt uitgevoerd, waarna wordt teruggekeerd naar de rest van de lage handler
Wanneer interrupts prioriteiten hebben, wordt een dringende interrupt afgehandeld door tussenbeide te komen, ook terwijl een andere handler draait. Geeft men bijvoorbeeld de detectie van motoroverstroom een hoge prioriteit en het ontvangen van communicatie een lage, dan kan direct op overstroom worden gereageerd, ook tijdens de verwerking van ontvangen gegevens. De NVIC van Arm Cortex-M en dergelijke hebben dit mechanisme. Interrupts met dezelfde of een lagere prioriteit moeten wachten tot de huidige handler klaar is.