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).

VectorIRQ · addressNameHandlerSource
–0x000000RESETreset: main() after start-upReset
1trap · 0x000006OscillatorFail_OscillatorFailOscillator Fail Trap vector
2trap · 0x000008AddressError_AddressErrorAddress error Trap vector
3trap · 0x00000AStackError_StackErrorStack Error Trap vector
4trap · 0x00000CMathError_MathErrorMath Error Trap vector
8IRQ 0 · 0x000014INT0Interrupt_INT0InterruptINT0 - External Interrupt 0
9IRQ 1 · 0x000016IC1Interrupt_IC1InterruptIC1 - Input Capture 1
10IRQ 2 · 0x000018OC1Interrupt_OC1InterruptOC1 - Output Compare 1
11IRQ 3 · 0x00001AT1Interrupt_T1InterruptT1 - Timer1
12IRQ 4 · 0x00001CIC2Interrupt_IC2InterruptIC2 - Input Capture 2
13IRQ 5 · 0x00001EOC2Interrupt_OC2InterruptOC2 - Output Compare 2
14IRQ 6 · 0x000020T2Interrupt_T2InterruptT2 - Timer2
15IRQ 7 · 0x000022T3Interrupt_T3InterruptT3 - Timer3
16IRQ 8 · 0x000024SPI1Interrupt_SPI1InterruptSPI1 - SPI1 Transfer Done
17IRQ 9 · 0x000026U1RXInterrupt_U1RXInterruptU1RX - UART1 Receiver
18IRQ 10 · 0x000028U1TXInterrupt_U1TXInterruptU1TX - UART1 Transmitter
19IRQ 11 · 0x00002AADCInterrupt_ADCInterruptADC1 - A/D Converter 1
20IRQ 12 · 0x00002CNVMInterrupt_NVMInterruptNVM Write Complete Interrupt
21IRQ 13 · 0x00002ESI2CInterrupt_SI2CInterruptSI2C1 - I2C1 Slave Events
22IRQ 14 · 0x000030MI2CInterrupt_MI2CInterruptMI2C1 - I2C1 Master Events
23IRQ 15 · 0x000032CNInterrupt_CNInterruptCN - Change Notification Interrupt
24IRQ 16 · 0x000034INT1Interrupt_INT1InterruptINT1 - External Interrupt 1
25IRQ 17 · 0x000036IC7Interrupt_IC7InterruptIC7 - Input Capture 7
26IRQ 18 · 0x000038IC8Interrupt_IC8InterruptIC8 - Input Capture 8
27IRQ 19 · 0x00003AOC3Interrupt_OC3InterruptOC3 - Output Compare 3
28IRQ 20 · 0x00003COC4Interrupt_OC4InterruptOC4 - Output Compare 4
29IRQ 21 · 0x00003ET4Interrupt_T4InterruptT4 - Timer4
30IRQ 22 · 0x000040T5Interrupt_T5InterruptT5 - Timer5
31IRQ 23 · 0x000042INT2Interrupt_INT2InterruptINT2 - External Interrupt 2
32IRQ 24 · 0x000044U2RXInterrupt_U2RXInterruptU2RX - UART2 Receiver
33IRQ 25 · 0x000046U2TXInterrupt_U2TXInterruptU2TX - UART2 Transmitter
34IRQ 26 · 0x000048SPI2Interrupt_SPI2InterruptSPI2 - SPI2 Transfer Done
35IRQ 27 · 0x00004AC1Interrupt_C1InterruptC1 - ECAN1 Event
36IRQ 28 · 0x00004CIC3Interrupt_IC3InterruptIC3 - Input Capture 3
37IRQ 29 · 0x00004EIC4Interrupt_IC4InterruptIC4 - Input Capture 4
38IRQ 30 · 0x000050IC5Interrupt_IC5InterruptIC5 - Input Capture 5
39IRQ 31 · 0x000052IC6Interrupt_IC6InterruptIC5 - Input Capture 6
40IRQ 32 · 0x000054OC5Interrupt_OC5InterruptOC5 - Output Compare 5
41IRQ 33 · 0x000056OC6Interrupt_OC6InterruptOC6 - Output Compare 6
42IRQ 34 · 0x000058OC7Interrupt_OC7InterruptOC7 - Output Compare 7
43IRQ 35 · 0x00005AOC8Interrupt_OC8InterruptOC8 - Output Compare 8
44IRQ 36 · 0x00005CINT3Interrupt_INT3InterruptINT3 - External Interrupt 3
45IRQ 37 · 0x00005EINT4Interrupt_INT4InterruptINT4 - External Interrupt 4
46IRQ 38 · 0x000060C2Interrupt_C2InterruptC2 - ECAN2 Event
47IRQ 39 · 0x000062PWMInterrupt_PWMInterruptPWM - PWM Period Match
48IRQ 40 · 0x000064QEIInterrupt_QEIInterruptQEI - Position Counter Compare
49IRQ 41 · 0x000066DCIInterrupt_DCIInterruptDCI - Interrupt
50IRQ 42 · 0x000068LVDInterrupt_LVDInterruptLVD - Interrupt
51IRQ 43 · 0x00006AFLTAInterrupt_FLTAInterruptFLTA - MCPWM Fault A
52IRQ 44 · 0x00006CFLTBInterrupt_FLTBInterruptFLTB - MCPWM Fault B