dsPIC33FJ16GS504 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 35 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 | External Interrupt 0 |
| 9 | IRQ 1 · 0x000016 | IC1Interrupt | _IC1Interrupt | Input Compare 1 |
| 10 | IRQ 2 · 0x000018 | OC1Interrupt | _OC1Interrupt | Output Compare 1 |
| 11 | IRQ 3 · 0x00001A | T1Interrupt | _T1Interrupt | Timer 1 |
| 13 | IRQ 5 · 0x00001E | IC2Interrupt | _IC2Interrupt | Input Capture 2 |
| 14 | IRQ 6 · 0x000020 | OC2Interrupt | _OC2Interrupt | Output Compare 2 |
| 15 | IRQ 7 · 0x000022 | T2Interrupt | _T2Interrupt | Timer 2 |
| 16 | IRQ 8 · 0x000024 | T3Interrupt | _T3Interrupt | Timer 3 |
| 17 | IRQ 9 · 0x000026 | SPI1ErrInterrupt | _SPI1ErrInterrupt | SPI1 error |
| 18 | IRQ 10 · 0x000028 | SPI1Interrupt | _SPI1Interrupt | SPI1 transfer done |
| 19 | IRQ 11 · 0x00002A | U1RXInterrupt | _U1RXInterrupt | UART1 Receiver |
| 20 | IRQ 12 · 0x00002C | U1TXInterrupt | _U1TXInterrupt | UART1 Transmitter |
| 21 | IRQ 13 · 0x00002E | ADCInterrupt | _ADCInterrupt | ADC Group Convert Done |
| 24 | IRQ 16 · 0x000034 | SI2C1Interrupt | _SI2C1Interrupt | I2C1 Slave Events |
| 25 | IRQ 17 · 0x000036 | MI2C1Interrupt | _MI2C1Interrupt | I2C1 Master Events |
| 26 | IRQ 18 · 0x000038 | CMP1Interrupt | _CMP1Interrupt | analog Comparator1 Interrupt |
| 27 | IRQ 19 · 0x00003A | CNInterrupt | _CNInterrupt | Change Notification Interrupt |
| 28 | IRQ 20 · 0x00003C | INT1Interrupt | _INT1Interrupt | External Interrupt 1 |
| 37 | IRQ 29 · 0x00004E | INT2Interrupt | _INT2Interrupt | External Interrupt 2 |
| 65 | IRQ 57 · 0x000086 | PWMSpEventMatchInterrupt | _PWMSpEventMatchInterrupt | PWM special event match |
| 73 | IRQ 65 · 0x000096 | U1ErrInterrupt | _U1ErrInterrupt | UART1 Error |
| 102 | IRQ 94 · 0x0000D0 | PWM1Interrupt | _PWM1Interrupt | PWM1 Interrupt |
| 103 | IRQ 95 · 0x0000D2 | PWM2Interrupt | _PWM2Interrupt | PWM2 Interrupt |
| 104 | IRQ 96 · 0x0000D4 | PWM3Interrupt | _PWM3Interrupt | PWM3 Interrupt |
| 105 | IRQ 97 · 0x0000D6 | PWM4Interrupt | _PWM4Interrupt | PWM4 Interrupt |
| 111 | IRQ 103 · 0x0000E2 | CMP2Interrupt | _CMP2Interrupt | Analog Comparator2 Interrupt |
| 112 | IRQ 104 · 0x0000E4 | CMP3Interrupt | _CMP3Interrupt | Analog Comparator3 Interrupt |
| 113 | IRQ 105 · 0x0000E6 | CMP4Interrupt | _CMP4Interrupt | Analog Comparator4 Interrupt |
| 118 | IRQ 110 · 0x0000F0 | ADCP0Interrupt | _ADCP0Interrupt | ADC Pair 0 Convert Done |
| 119 | IRQ 111 · 0x0000F2 | ADCP1Interrupt | _ADCP1Interrupt | ADC Pair 1 Convert Done |
| 120 | IRQ 112 · 0x0000F4 | ADCP2Interrupt | _ADCP2Interrupt | ADC Pair 2 Convert Done |
| 121 | IRQ 113 · 0x0000F6 | ADCP3Interrupt | _ADCP3Interrupt | ADC Pair 3 Convert Done |
| 122 | IRQ 114 · 0x0000F8 | ADCP4Interrupt | _ADCP4Interrupt | ADC Pair 4 Convert Done |
| 123 | IRQ 115 · 0x0000FA | ADCP5Interrupt | _ADCP5Interrupt | ADC Pair 5 Convert Done |
| 124 | IRQ 116 · 0x0000FC | ADCP6Interrupt | _ADCP6Interrupt | ADC Pair 6 Convert Done |