Datasheet
dsPIC30F
DS70043F-page 16 © 2005 Microchip Technology Inc.
6.0 EXCEPTION PROCESSING
The dsPIC30F has four processor exceptions (traps)
and up to 45 sources of interrupts, which must be
arbitrated based on a priority scheme.
The processor core is responsible for reading the
Interrupt Vector Table (IVT) and transferring the
address contained in the interrupt vector to the
program counter.
The Interrupt Vector Table (IVT) and Alternate Interrupt
Vector Table (AIVT) are placed near the beginning of
program memory (0x000004) for ease of debugging.
The interrupt controller hardware pre-processes the
interrupts before they are presented to the CPU.
The interrupts and traps are enabled, prioritized and
controlled using centralized Special Function
Registers.
Each individual interrupt source has its own vector
address and can be individually enabled and prioritized
in user software. Each interrupt source also has its own
status flag. This independent control and monitoring of
the interrupt eliminates the need to poll various status
flags to determine the interrupt source
Table 6-1 contains information about the interrupt
vector.
Certain interrupts have specialized control bits for
features like edge or level triggered interrupts,
interrupt-on-change, etc. Control of these features
remains within the Peripheral module, which
generates the interrupt.
The special DISI instruction can be used to disable
the processing of interrupts of priorities 6 and lower for
a certain number of instruction cycles, during which
the DISI bit remains set.
TABLE 6-1: INTERRUPT VECTORS
Vector
Number
IVT Address AIVT Address Interrupt Source
8 0x000014 0x000094 INT0 – External Interrupt 0
9 0x000016 0x000096 IC1 – Input Compare 1
10 0x000018 0x000098 OC1 – Output Compare 1
11 0x00001A 0x00009A T1 – Timer1
12 0x00001C 0x00009C IC2 – Input Capture 2
13 0x00001E 0x00009E OC2 – Output Compare 2
14 0x000020 0x0000A0 T2 – Timer2
15 0x000022 0x0000A2 T3 – Timer3
16 0x000024 0x0000A4 SPI1
17 0x000026 0x0000A6 U1RX – UART1 Receiver
18 0x000028 0x0000A8 U1TX – UART1 Transmitter
19 0x00002A 0x0000AA ADC – ADC Convert Done
20 0x00002C 0x0000AC NVM – NVM Write Complete
21 0x00002E 0x0000AE I2C Slave Operation – Message Detect
22 0x000030 0x0000B0 I2C Master Operation – Message Event Complete
23 0x000032 0x0000B2 Change Notice Interrupt
24 0x000034 0x0000B4 INT1 – External Interrupt 1
25 0x000036 0x0000B6 IC7 – Input Capture 7
26 0x000038 0x0000B8 IC8 – Input Capture 8
27 0x00003A 0x0000BA OC3 – Output Compare 3
28 0x00003C 0x0000BC OC4 – Output Compare 4
29 0x00003E 0x0000BE T4 – Timer4
30 0x000040 0x0000C0 T5 – Timer5
31 0x000042 0x0000C2 INT2 – External Interrupt 2
32 0x000044 0x0000C4 U2RX – UART2 Receiver
33 0x000046 0x0000C6 U2TX – UART2 Transmitter
34 0x000048 0x0000C8 SPI2
35 0x00004A 0x0000CA CAN1