dsPIC33FJ32MC104 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 28 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 Compare 1
10IRQ 2 · 0x000018OC1Interrupt_OC1InterruptOC1 - Output Compare 1
11IRQ 3 · 0x00001AT1Interrupt_T1InterruptT1 - Timer1
13IRQ 5 · 0x00001EIC2Interrupt_IC2InterruptIC2 - Input Capture 2
14IRQ 6 · 0x000020OC2Interrupt_OC2InterruptOC2 - Output Compare 2
15IRQ 7 · 0x000022T2Interrupt_T2InterruptT2 - Timer2
16IRQ 8 · 0x000024T3Interrupt_T3InterruptT3 - Timer3
17IRQ 9 · 0x000026SPI1ErrInterrupt_SPI1ErrInterruptSPI1E - SPI1 Error
18IRQ 10 · 0x000028SPI1Interrupt_SPI1InterruptSPI1 - SPI1 Transfer Done
19IRQ 11 · 0x00002AU1RXInterrupt_U1RXInterruptU1RX - UART1 Receiver
20IRQ 12 · 0x00002CU1TXInterrupt_U1TXInterruptU1TX - UART1 Transmitter
21IRQ 13 · 0x00002EADC1Interrupt_ADC1InterruptADC1 - A/D Converter 1
24IRQ 16 · 0x000034SI2C1Interrupt_SI2C1InterruptSI2C1 - I2C1 Slave Events
25IRQ 17 · 0x000036MI2C1Interrupt_MI2C1InterruptMI2C1 - I2C1 Master Events
26IRQ 18 · 0x000038CompInterrupt_CompInterruptAnalog Comparator Interrupt
27IRQ 19 · 0x00003ACNInterrupt_CNInterruptChange Notification Interrupt
28IRQ 20 · 0x00003CINT1Interrupt_INT1InterruptINT1 - External Interrupt 1
35IRQ 27 · 0x00004AT4Interrupt_T4InterruptT4 - Timer4
36IRQ 28 · 0x00004CT5Interrupt_T5InterruptT5 - Timer5
37IRQ 29 · 0x00004EINT2Interrupt_INT2InterruptINT2 - External Interrupt 2
45IRQ 37 · 0x00005EIC3Interrupt_IC3InterruptInput Capture 3
65IRQ 57 · 0x000086PWM1Interrupt_PWM1InterruptPWM1 - PWM1 Period Match
70IRQ 62 · 0x000090RTCCInterrupt_RTCCInterruptRTCC - Real-Time Clock and Calendar
71IRQ 63 · 0x000092FLTA1Interrupt_FLTA1InterruptFLTA1 - PWM1 Fault A
72IRQ 64 · 0x000094FLTB1Interrupt_FLTB1InterruptFLTB1 - PWM1 Fault B
73IRQ 65 · 0x000096U1ErrInterrupt_U1ErrInterruptU1E - UART1 Error
85IRQ 77 · 0x0000AECTMUInterrupt_CTMUInterruptCTMU - Interrupt