dsPIC30F2012 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 45 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 | 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 | IC2Interrupt | _IC2Interrupt | IC2 - Input Capture 2 |
| 13 | IRQ 5 · 0x00001E | OC2Interrupt | _OC2Interrupt | OC2 - Output Compare 2 |
| 14 | IRQ 6 · 0x000020 | T2Interrupt | _T2Interrupt | T2 - Timer2 |
| 15 | IRQ 7 · 0x000022 | T3Interrupt | _T3Interrupt | T3 - Timer3 |
| 16 | IRQ 8 · 0x000024 | SPI1Interrupt | _SPI1Interrupt | SPI1 - SPI1 Transfer Done |
| 17 | IRQ 9 · 0x000026 | U1RXInterrupt | _U1RXInterrupt | U1RX - UART1 Receiver |
| 18 | IRQ 10 · 0x000028 | U1TXInterrupt | _U1TXInterrupt | U1TX - UART1 Transmitter |
| 19 | IRQ 11 · 0x00002A | ADCInterrupt | _ADCInterrupt | ADC1 - A/D Converter 1 |
| 20 | IRQ 12 · 0x00002C | NVMInterrupt | _NVMInterrupt | NVM Write Complete Interrupt |
| 21 | IRQ 13 · 0x00002E | SI2CInterrupt | _SI2CInterrupt | SI2C1 - I2C1 Slave Events |
| 22 | IRQ 14 · 0x000030 | MI2CInterrupt | _MI2CInterrupt | MI2C1 - I2C1 Master Events |
| 23 | IRQ 15 · 0x000032 | CNInterrupt | _CNInterrupt | CN - Change Notification Interrupt |
| 24 | IRQ 16 · 0x000034 | INT1Interrupt | _INT1Interrupt | INT1 - External Interrupt 1 |
| 25 | IRQ 17 · 0x000036 | IC7Interrupt | _IC7Interrupt | IC7 - Input Capture 7 |
| 26 | IRQ 18 · 0x000038 | IC8Interrupt | _IC8Interrupt | IC8 - Input Capture 8 |
| 27 | IRQ 19 · 0x00003A | OC3Interrupt | _OC3Interrupt | OC3 - Output Compare 3 |
| 28 | IRQ 20 · 0x00003C | OC4Interrupt | _OC4Interrupt | OC4 - Output Compare 4 |
| 29 | IRQ 21 · 0x00003E | T4Interrupt | _T4Interrupt | T4 - Timer4 |
| 30 | IRQ 22 · 0x000040 | T5Interrupt | _T5Interrupt | T5 - Timer5 |
| 31 | IRQ 23 · 0x000042 | INT2Interrupt | _INT2Interrupt | INT2 - External Interrupt 2 |
| 32 | IRQ 24 · 0x000044 | U2RXInterrupt | _U2RXInterrupt | U2RX - UART2 Receiver |
| 33 | IRQ 25 · 0x000046 | U2TXInterrupt | _U2TXInterrupt | U2TX - UART2 Transmitter |
| 34 | IRQ 26 · 0x000048 | SPI2Interrupt | _SPI2Interrupt | SPI2 - SPI2 Transfer Done |
| 35 | IRQ 27 · 0x00004A | C1Interrupt | _C1Interrupt | C1 - ECAN1 Event |
| 36 | IRQ 28 · 0x00004C | IC3Interrupt | _IC3Interrupt | IC3 - Input Capture 3 |
| 37 | IRQ 29 · 0x00004E | IC4Interrupt | _IC4Interrupt | IC4 - Input Capture 4 |
| 38 | IRQ 30 · 0x000050 | IC5Interrupt | _IC5Interrupt | IC5 - Input Capture 5 |
| 39 | IRQ 31 · 0x000052 | IC6Interrupt | _IC6Interrupt | IC5 - Input Capture 6 |
| 40 | IRQ 32 · 0x000054 | OC5Interrupt | _OC5Interrupt | OC5 - Output Compare 5 |
| 41 | IRQ 33 · 0x000056 | OC6Interrupt | _OC6Interrupt | OC6 - Output Compare 6 |
| 42 | IRQ 34 · 0x000058 | OC7Interrupt | _OC7Interrupt | OC7 - Output Compare 7 |
| 43 | IRQ 35 · 0x00005A | OC8Interrupt | _OC8Interrupt | OC8 - Output Compare 8 |
| 44 | IRQ 36 · 0x00005C | INT3Interrupt | _INT3Interrupt | INT3 - External Interrupt 3 |
| 45 | IRQ 37 · 0x00005E | INT4Interrupt | _INT4Interrupt | INT4 - External Interrupt 4 |
| 46 | IRQ 38 · 0x000060 | C2Interrupt | _C2Interrupt | C2 - ECAN2 Event |
| 47 | IRQ 39 · 0x000062 | PWMInterrupt | _PWMInterrupt | PWM - PWM Period Match |
| 48 | IRQ 40 · 0x000064 | QEIInterrupt | _QEIInterrupt | QEI - Position Counter Compare |
| 49 | IRQ 41 · 0x000066 | DCIInterrupt | _DCIInterrupt | DCI - Interrupt |
| 50 | IRQ 42 · 0x000068 | LVDInterrupt | _LVDInterrupt | LVD - Interrupt |
| 51 | IRQ 43 · 0x00006A | FLTAInterrupt | _FLTAInterrupt | FLTA - MCPWM Fault A |
| 52 | IRQ 44 · 0x00006C | FLTBInterrupt | _FLTBInterrupt | FLTB - MCPWM Fault B |