PIC24FJ256GB610 interrupt vectors
Reset at 0x000000 (a GOTO to the program), then the interrupt vector table from 0x000004: first the 6 traps (non-maskable faults: oscillator failure, address error, stack error, math error…), then the 97 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 |
| 0 | trap · 0x000004 | OscillatorFail | _OscillatorFail | Oscillator Fail Trap vector |
| 1 | trap · 0x000006 | AddressError | _AddressError | Address Error Trap Vector |
| 2 | trap · 0x000008 | NVMError | _NVMError | NVM Error Trap Vector |
| 3 | trap · 0x00000A | StackError | _StackError | Stack Error Trap Vector |
| 4 | trap · 0x00000C | MathError | _MathError | Math Error Trap Vector |
| 6 | trap · 0x000010 | GeneralError | _GeneralError | General Soft Trap Vector |
| 8 | IRQ 0 · 0x000014 | INT0Interrupt | _INT0Interrupt | INT0 - External Interrupt 0 |
| 9 | IRQ 1 · 0x000016 | IC1Interrupt | _IC1Interrupt | IC1 - Input Capture 1 |
| 10 | IRQ 2 · 0x000018 | OC1Interrupt | _OC1Interrupt | OC1 - Output Compare 1 |
| 11 | IRQ 3 · 0x00001A | T1Interrupt | _T1Interrupt | T1 - Timer1 |
| 12 | IRQ 4 · 0x00001C | DMA0Interrupt | _DMA0Interrupt | DMA0 - Direct Memory Access 0 |
| 13 | IRQ 5 · 0x00001E | IC2Interrupt | _IC2Interrupt | IC2 - Input Capture 2 |
| 14 | IRQ 6 · 0x000020 | OC2Interrupt | _OC2Interrupt | OC2 - Output Compare 2 |
| 15 | IRQ 7 · 0x000022 | T2Interrupt | _T2Interrupt | T2 - Timer2 |
| 16 | IRQ 8 · 0x000024 | T3Interrupt | _T3Interrupt | T3 - Timer3 |
| 17 | IRQ 9 · 0x000026 | SPI1Interrupt | _SPI1Interrupt | SPI1 - SPI1 General |
| 18 | IRQ 10 · 0x000028 | SPI1TXInterrupt | _SPI1TXInterrupt | SPI1TX - SPI1 Transfer Done |
| 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 |
| 22 | IRQ 14 · 0x000030 | DMA1Interrupt | _DMA1Interrupt | DMA1 - Direct Memory Access 1 |
| 23 | IRQ 15 · 0x000032 | NVMInterrupt | _NVMInterrupt | NVM - NVM Program/Erase Complete |
| 24 | IRQ 16 · 0x000034 | SI2C1Interrupt | _SI2C1Interrupt | SI2C1 - I2C1 Slave Events |
| 25 | IRQ 17 · 0x000036 | MI2C1Interrupt | _MI2C1Interrupt | MI2C1 - I2C1 Master Events |
| 26 | IRQ 18 · 0x000038 | CompInterrupt | _CompInterrupt | Comp - Comparator |
| 27 | IRQ 19 · 0x00003A | IOCInterrupt | _IOCInterrupt | IOC - Interrupt On Change Interrupt |
| 28 | IRQ 20 · 0x00003C | INT1Interrupt | _INT1Interrupt | INT1 - External Interrupt 1 |
| 30 | IRQ 22 · 0x000040 | CCP5Interrupt | _CCP5Interrupt | CCP5 - Capture/Compare 5 |
| 31 | IRQ 23 · 0x000042 | CCP6Interrupt | _CCP6Interrupt | CCP6 - Capture/Compare 6 |
| 32 | IRQ 24 · 0x000044 | DMA2Interrupt | _DMA2Interrupt | DMA2 - Direct Memory Access 2 |
| 33 | IRQ 25 · 0x000046 | OC3Interrupt | _OC3Interrupt | OC3 - Output Compare 3 |
| 34 | IRQ 26 · 0x000048 | OC4Interrupt | _OC4Interrupt | OC4 - Output Compare 4 |
| 35 | IRQ 27 · 0x00004A | T4Interrupt | _T4Interrupt | T4 - Timer4 |
| 36 | IRQ 28 · 0x00004C | T5Interrupt | _T5Interrupt | T5 - Timer5 |
| 37 | IRQ 29 · 0x00004E | INT2Interrupt | _INT2Interrupt | INT2 - External Interrupt 2 |
| 38 | IRQ 30 · 0x000050 | U2RXInterrupt | _U2RXInterrupt | U2RX - UART2 Receiver |
| 39 | IRQ 31 · 0x000052 | U2TXInterrupt | _U2TXInterrupt | U2TX - UART2 Transmitter |
| 40 | IRQ 32 · 0x000054 | SPI2Interrupt | _SPI2Interrupt | SPI2 - SPI2 General |
| 41 | IRQ 33 · 0x000056 | SPI2TXInterrupt | _SPI2TXInterrupt | SPI2TX - SPI2 Transfer Done |
| 44 | IRQ 36 · 0x00005C | DMA3Interrupt | _DMA3Interrupt | DMA3 - Direct Memory Access 3 |
| 45 | IRQ 37 · 0x00005E | IC3Interrupt | _IC3Interrupt | IC3 - Input Capture 3 |
| 46 | IRQ 38 · 0x000060 | IC4Interrupt | _IC4Interrupt | IC4 - Input Capture 4 |
| 47 | IRQ 39 · 0x000062 | IC5Interrupt | _IC5Interrupt | IC5 - Input Capture 5 |
| 48 | IRQ 40 · 0x000064 | IC6Interrupt | _IC6Interrupt | IC6 - Input Capture 6 |
| 49 | IRQ 41 · 0x000066 | OC5Interrupt | _OC5Interrupt | OC5 - Output Compare 5 |
| 50 | IRQ 42 · 0x000068 | OC6Interrupt | _OC6Interrupt | OC6 - Output Compare 6 |
| 51 | IRQ 43 · 0x00006A | CCT3Interrupt | _CCT3Interrupt | CCT3 - Capture/Compare Timer 3 |
| 52 | IRQ 44 · 0x00006C | CCT4Interrupt | _CCT4Interrupt | CCT4 - Capture/Compare Timer 4 |
| 53 | IRQ 45 · 0x00006E | PMPInterrupt | _PMPInterrupt | PMP - Parallel Master Port |
| 54 | IRQ 46 · 0x000070 | DMA4Interrupt | _DMA4Interrupt | DMA4 - Direct Memory Access 4 |
| 55 | IRQ 47 · 0x000072 | CCT5Interrupt | _CCT5Interrupt | CCT5 - Capture/Compare Timer 5 |
| 56 | IRQ 48 · 0x000074 | CCT6Interrupt | _CCT6Interrupt | CCT6 - Capture/Compare Timer 6 |
| 57 | IRQ 49 · 0x000076 | SI2C2Interrupt | _SI2C2Interrupt | SI2C2 - I2C2 Slave Events |
| 58 | IRQ 50 · 0x000078 | MI2C2Interrupt | _MI2C2Interrupt | MI2C2 - I2C2 Master Events |
| 59 | IRQ 51 · 0x00007A | CCT7Interrupt | _CCT7Interrupt | CCT7 - Capture/Compare Timer 7 |
| 61 | IRQ 53 · 0x00007E | INT3Interrupt | _INT3Interrupt | INT3 - External Interrupt 3 |
| 62 | IRQ 54 · 0x000080 | INT4Interrupt | _INT4Interrupt | INT4 - External Interrupt 4 |
| 66 | IRQ 58 · 0x000088 | SPI1RXInterrupt | _SPI1RXInterrupt | SPI1RX - SPI1 Receive Done |
| 67 | IRQ 59 · 0x00008A | SPI2RXInterrupt | _SPI2RXInterrupt | SPI2RX - SPI2 Receive Done |
| 68 | IRQ 60 · 0x00008C | SPI3RXInterrupt | _SPI3RXInterrupt | SPI3RX - SPI3 Receive Done |
| 69 | IRQ 61 · 0x00008E | DMA5Interrupt | _DMA5Interrupt | DMA5 - Direct Memory Access 5 |
| 70 | IRQ 62 · 0x000090 | RTCCInterrupt | _RTCCInterrupt | RTCC - Real-Time Clock and Calendar |
| 71 | IRQ 63 · 0x000092 | CCP1Interrupt | _CCP1Interrupt | CCP1 - Capture/Compare 1 |
| 72 | IRQ 64 · 0x000094 | CCP2Interrupt | _CCP2Interrupt | CCP2 - Capture/Compare 2 |
| 73 | IRQ 65 · 0x000096 | U1ErrInterrupt | _U1ErrInterrupt | U1E - UART1 Error |
| 74 | IRQ 66 · 0x000098 | U2ErrInterrupt | _U2ErrInterrupt | U2E - UART2 Error |
| 75 | IRQ 67 · 0x00009A | CRCInterrupt | _CRCInterrupt | CRC - Cyclic Redundancy Check |
| 76 | IRQ 68 · 0x00009C | DMA6Interrupt | _DMA6Interrupt | DMA6 - Direct Memory Access 6 |
| 77 | IRQ 69 · 0x00009E | DMA7Interrupt | _DMA7Interrupt | DMA7 - Direct Memory Access 7 |
| 78 | IRQ 70 · 0x0000A0 | SI2C3Interrupt | _SI2C3Interrupt | SI2C3 - I2C3 Slave Events |
| 79 | IRQ 71 · 0x0000A2 | MI2C3Interrupt | _MI2C3Interrupt | MI2C3 - I2C3 Master Events |
| 80 | IRQ 72 · 0x0000A4 | LVDInterrupt | _LVDInterrupt | LVD - Low Voltage Detect |
| 81 | IRQ 73 · 0x0000A6 | CCP7Interrupt | _CCP7Interrupt | CCP7 - Capture/Compare 7 |
| 85 | IRQ 77 · 0x0000AE | CTMUInterrupt | _CTMUInterrupt | CTMU - Interrupt |
| 89 | IRQ 81 · 0x0000B6 | U3ErrInterrupt | _U3ErrInterrupt | U3E - UART3 Error |
| 90 | IRQ 82 · 0x0000B8 | U3RXInterrupt | _U3RXInterrupt | U3RX - UART3 Receiver |
| 91 | IRQ 83 · 0x0000BA | U3TXInterrupt | _U3TXInterrupt | U3TX - UART3 Transmitter |
| 92 | IRQ 84 · 0x0000BC | I2C1BCInterrupt | _I2C1BCInterrupt | I2C1BC - I2C1 Bus Collision |
| 93 | IRQ 85 · 0x0000BE | I2C2BCInterrupt | _I2C2BCInterrupt | I2C2BC - I2C2 Bus Collision |
| 94 | IRQ 86 · 0x0000C0 | USB1Interrupt | _USB1Interrupt | USB1 - USB1 Interrupt |
| 95 | IRQ 87 · 0x0000C2 | U4ErrInterrupt | _U4ErrInterrupt | U4E - UART4 Error |
| 96 | IRQ 88 · 0x0000C4 | U4RXInterrupt | _U4RXInterrupt | U4RX - UART4 Receiver |
| 97 | IRQ 89 · 0x0000C6 | U4TXInterrupt | _U4TXInterrupt | U4TX - UART4 Transmitter |
| 98 | IRQ 90 · 0x0000C8 | SPI3Interrupt | _SPI3Interrupt | SPI3 - SPI3 General |
| 99 | IRQ 91 · 0x0000CA | SPI3TXInterrupt | _SPI3TXInterrupt | SPI3TX - SPI3 Transfer Done |
| 102 | IRQ 94 · 0x0000D0 | CCP3Interrupt | _CCP3Interrupt | CCP3 - Capture/Compare 3 |
| 103 | IRQ 95 · 0x0000D2 | CCP4Interrupt | _CCP4Interrupt | CCP4 - Capture/Compare 4 |
| 104 | IRQ 96 · 0x0000D4 | CLC1Interrupt | _CLC1Interrupt | CLC1 - Configurable Logic Cell 1 |
| 105 | IRQ 97 · 0x0000D6 | CLC2Interrupt | _CLC2Interrupt | CLC2 - Configurable Logic Cell 2 |
| 106 | IRQ 98 · 0x0000D8 | CLC3Interrupt | _CLC3Interrupt | CLC3 - Configurable Logic Cell 3 |
| 107 | IRQ 99 · 0x0000DA | CLC4Interrupt | _CLC4Interrupt | CLC4 - Configurable Logic Cell 4 |
| 109 | IRQ 101 · 0x0000DE | CCT1Interrupt | _CCT1Interrupt | CCT1 - Capture/Compare Timer 1 |
| 110 | IRQ 102 · 0x0000E0 | CCT2Interrupt | _CCT2Interrupt | CCT2 - Capture/Compare Timer 2 |
| 114 | IRQ 106 · 0x0000E8 | FSTInterrupt | _FSTInterrupt | FST - FRC Self Tuning Interrupt |
| 117 | IRQ 109 · 0x0000EE | I2C3BCInterrupt | _I2C3BCInterrupt | I2C3BC - I2C3 Bus Collision |
| 118 | IRQ 110 · 0x0000F0 | RTCCTSInterrupt | _RTCCTSInterrupt | RTCCTS - Real-Time Clock and Calendar Timestamp |
| 119 | IRQ 111 · 0x0000F2 | U5RXInterrupt | _U5RXInterrupt | U5RX - UART5 Receiver |
| 120 | IRQ 112 · 0x0000F4 | U5TXInterrupt | _U5TXInterrupt | U5TX - UART5 Transmitter |
| 121 | IRQ 113 · 0x0000F6 | U5ErrInterrupt | _U5ErrInterrupt | U5E - UART5 Error |
| 122 | IRQ 114 · 0x0000F8 | U6RXInterrupt | _U6RXInterrupt | U6RX - UART6 Receiver |
| 123 | IRQ 115 · 0x0000FA | U6TXInterrupt | _U6TXInterrupt | U6TX - UART6 Transmitter |
| 124 | IRQ 116 · 0x0000FC | U6ErrInterrupt | _U6ErrInterrupt | U6E - UART6 Error |
| 125 | IRQ 117 · 0x0000FE | JTAGInterrupt | _JTAGInterrupt | JTAG - JTAG |