Interrupts; Processing Interrupts; Interrupt Vector Table; Interrupt Processing Flow - Freescale Semiconductor DSP56800E User Manual

Hide thumbs Also See for DSP56800E:
Table of Contents

Advertisement

Core System Infrastructure
2.5

Interrupts

This section describes interrupt processing and interrupt configuration using the
DSP56800E_Quick_Start tool. For detailed information on interrupts and interrupt processing for
the 56F800E, please see the 56800E 16-Bit Core Reference Manual and the target processor's
User's Manual.
2.5.1

Processing Interrupts

An interrupt is an event that is generated by a condition inside the microcontroller or from
external sources. When such event occurs, the interrupt processing transfers control from the
currently executing program to an interrupt service routine (ISR), with the ability to later return to
the current program upon completion of the ISR. Among the main uses of interrupts we can have
data transfers between microcontroller memory and a peripheral device, or begin of execution of
an algorithm upon reception of a new sample. An interrupt can also be used, for example, to exit
the microcontroller's low-power wait processing state.
2.5.1.1

Interrupt Vector Table

The interrupt system on 56F800E can be defined as vectored. Each interrupt source has its own
program memory location at a fixed address, to which program control is passed when an
interrupt occurs. This program memory location must contain a JSR instruction with the address
of the interrupt service routine (ISR). When this interrupt occurs, the JSR instruction is executed
and the program control is passed to the ISR. The program memory containing the JSR
instructions with the addresses of the ISR is called interrupt vector table.
Depending on processor configuration (the state of the EXTBOOT and EMI_MODE pins during
reset), the interrupt vector table might be located at base address 0x0000 or 0x20000. During the
code execution, the interrupt vector table base address can be changed by modifying the VBA
register of interrupt controller unit (INTC).
In the DSP56800E_Quick_Start tool, the full interrupt vector table is always located at address
0x0000 regardless of the configuration of the EXTBOOT and EMI_MODE pins. The VBA
register is set to zero during the startup code. For the case the processor configuration directs reset
vector to 0x20000, the jump to startup code is also linked to this address. See Section 2.1.1 on
page 2-2 for closer description of the booting process.
In the DSP56800E_Quick_Start tool, the interrupt vector table is implemented in C code which
enables to effectively use the C preprocessor. The special macros defined in the global application
configuration file (appconfig.h) can be used to setup the interrupt vector and to assign the
interrupt priorities.
The interrupt controller and its configuration are described in more details later in Section 2.5.2.1.
2.5.1.2

Interrupt Processing Flow

Figure 2-2 shows an interrupt processing flow. The DSP56800E_Quick_Start tool does not
provide any intermediate step when calling the ISR. When an interrupt occurs, the currently
executed program is interrupted and the JSR instruction from the interrupt vector table is fetched.
Executing the JSR instruction results in the program changing its flow directly to an ISR. Also the
status register and the program counter are pushed onto the stack. When the user ISR finishes, it
2-24
Targeting 56F8xxx Platform
FREESCALE SEMICONDUCTOR

Advertisement

Table of Contents
loading

Table of Contents