How to do it
movs, or equivalent, moves SPSR to
CPSROR, process interrupt in notifier
Your code should operate correctly if there is another interrupt waiting which is taken immediately after interrupts are enabled.
| Monolithic ISRs | Signals | Task chains | Comments | |
| Non-nested | Yes | Yes | No: User tasks interruptable | Better not be very much to do.
Test interrupt sources in order of priority. |
| Nested | Not usually | No. Trying to do minimal work | Yes: prioritized within task structure | Not very useful without priorities elsewhere
Interrupts block-structured |
| Prioritized Nested | When there is too much to do. | No. Trying to do minimal work | Interruptable kernel, OR free with prioritized tasks | Hard to get right
Do only higher priority nested |
| Prioritized: software | No | No | Yes | Minimal interruption for lower priority |
| Prioritized: hardware | Yes, if processing is long | Yes, for simultaneous interrupts | Yes, for simultaneous interrupts | No interruption for lower priority |
| Vectored, with priority | Yes, for speed | Yes, for speed | Not usually worth it | This cuts out polling of the interrupt controller and the devices. |
Two controllers, daisy-chained
Registers at
47 registers per controller
Priority
Making programming easier
What do you do when there are no tasks to run?
HALT
Return to: