Interrupt service routine (ISR)
De functie waarnaar de processor springt wanneer een interrupt afgaat — code die op geleende tijd draait, midden in iets anders.
Het adres komt uit de interruptvectortabel. Op Cortex-M is een ISR een gewone C-functie, omdat de hardware zelf de caller-saved registers opslaat in een exception frame; oudere architecturen vereisten een assemblerproloog of een compilerspecifiek __interrupt-sleutelwoord.
De spelregels gelden overal: houd het kort, blokkeer nooit, wis de interruptvlag voor het terugkeren (anders gaat hij meteen weer af), en deel gegevens met het hoofdprogramma via volatile-variabelen of een kritieke sectie. Zwaar werk wordt aan een taak overgedragen — zie uitgestelde interruptafhandeling. FreeRTOS heeft aparte …FromISR()-aanroepen, juist omdat de gewone API kan proberen te slapen, wat een ISR nooit mag.