PIC24F16KM104 interrupt vectors
Reset at 0x000000 (a GOTO to the program), then the interrupt vector table from 0x000004: first the 4 traps (non-maskable faults: oscillator failure, address error, stack error, math error…), then the 21 interrupt sources. Each vector is one program word holding its handler's address, so vector n is at 0x000004 + 2n, and IRQ n is vector n + 8. Each source has a flag in IFSx, an enable bit in IECx and a priority from 1 to 7 in IPCx (the Registers page lists them). In XC16 a handler is named after its vector: void __attribute__((interrupt, auto_psv)) _T1Interrupt(void).
| Vector | IRQ · address | Name | Handler | Source |
|---|---|---|---|---|
| – | 0x000000 | RESET | reset: main() after start-up | Reset |
| 1 | trap · 0x000006 | OscillatorFail | _OscillatorFail | Oscillator Fail Trap vector |
| 2 | trap · 0x000008 | AddressError | _AddressError | Address Error Trap Vector |
| 3 | trap · 0x00000A | StackError | _StackError | Stack Error Trap Vector |
| 4 | trap · 0x00000C | MathError | _MathError | Math Error Trap Vector |
| 8 | IRQ 0 · 0x000014 | INT0Interrupt | _INT0Interrupt | INT0 - External Interrupt 0 |
| 9 | IRQ 1 · 0x000016 | CCP1Interrupt | _CCP1Interrupt | CCP1 - Capture/Compare 1 |
| 10 | IRQ 2 · 0x000018 | CCP2Interrupt | _CCP2Interrupt | CCP2 - Capture/Compare 2 |
| 11 | IRQ 3 · 0x00001A | T1Interrupt | _T1Interrupt | T1 - Timer1 |
| 15 | IRQ 7 · 0x000022 | CCT1Interrupt | _CCT1Interrupt | CCT1 - CCP1 Timebase |
| 16 | IRQ 8 · 0x000024 | CCT2Interrupt | _CCT2Interrupt | CCT2 - CCP2 Timebase |
| 19 | IRQ 11 · 0x00002A | U1RXInterrupt | _U1RXInterrupt | U1RX - UART1 Receiver |
| 20 | IRQ 12 · 0x00002C | U1TXInterrupt | _U1TXInterrupt | U1TX - UART1 Transmitter |
| 21 | IRQ 13 · 0x00002E | ADC1Interrupt | _ADC1Interrupt | ADC1 - A/D Converter 1 |
| 23 | IRQ 15 · 0x000032 | NVMInterrupt | _NVMInterrupt | NVM - NVM Write Complete |
| 24 | IRQ 16 · 0x000034 | MSSP1Interrupt | _MSSP1Interrupt | MSSP1 - I2C/SPI Interrupt |
| 25 | IRQ 17 · 0x000036 | MSSP1BCInterrupt | _MSSP1BCInterrupt | MSSP1BC - MSSP1 Bus Collision |
| 26 | IRQ 18 · 0x000038 | CompInterrupt | _CompInterrupt | Comp - Comparator |
| 27 | IRQ 19 · 0x00003A | CNInterrupt | _CNInterrupt | CN - Change Notification Interrupt |
| 28 | IRQ 20 · 0x00003C | INT1Interrupt | _INT1Interrupt | INT1 - External Interrupt 1 |
| 37 | IRQ 29 · 0x00004E | INT2Interrupt | _INT2Interrupt | INT2 - External Interrupt 2 |
| 73 | IRQ 65 · 0x000096 | U1ErrInterrupt | _U1ErrInterrupt | U1E - UART1 Error |
| 80 | IRQ 72 · 0x0000A4 | HLVDInterrupt | _HLVDInterrupt | HLVD - Low Voltage Detect |
| 85 | IRQ 77 · 0x0000AE | CTMUInterrupt | _CTMUInterrupt | CTMU - Interrupt |
| 88 | IRQ 80 · 0x0000B4 | ULPWUInterrupt | _ULPWUInterrupt | ULPWU - Ultra-Low Pwr Wake-up |
| 104 | IRQ 96 · 0x0000D4 | CLC1Interrupt | _CLC1Interrupt | CLC1 - Configurable Logic Cell Interrupt |