Installing Fast Interrupts - Freescale Semiconductor DSP56800E User Manual

Hide thumbs Also See for DSP56800E:
Table of Contents

Advertisement

Core System Infrastructure
To enable the interrupt servicing and to assign a certain priority level, the user defines the macro:
INT_PRIORITY_LEVEL_xx INTC_LEVELn
To explicitly disable the interrupt, the user can define the macro as
INT_PRIORITY_LEVEL_xx INTC_DISABLED
where xx is the interrupt number (from 1 to 80) and n is the interrupt level (from 0 to 3). The
interrupt sources configurations are then applied to a processor core by issuing the INTC_INIT
ioctl command, for example in the main function.
The C preprocessor and compiler check the validity of the selected priority level early during the
compilation and issues compilation errors if invalid combination of interrupt source number and
interrupt priority level is requested (or if priority level is requested to be set for the source with
fixed priority level).
2.5.2.3

Installing Fast Interrupts

As described in Section 2.5.1.5 on page 2-26, two interrupt sources can be selected as "Fast
Interrupts". For the fast interrupts, the interrupt controller does not fetch the jsr instruction from
the vector table and directly loads the program counter (PC) with address specified in dedicated
Fast Interrupt Vector Address (FIVA) registers.
In the DSP56800E_Quick_Start tool, the fast interrupts are automatically configured by the
INTC_INIT code if the user defines the macros:
INTC_FIM0_INIT xx
or
INTC_FIM1_INIT xx
where xx specifies what interrupt source is to be selected as fast interrupt (0 or 1).
By default, the address of interrupt service routine defined by INT_VECTOR_ADDR_xx is then
automatically loaded into the FIVA registers during the INTC_INIT command. The
preprocessor also verifies the interrupt identified for a fast interrupt is configured to priority level
2 (which is required for the proper operation).
Caution: A special Fast Interrupt Return instruction (frtid) must be used in order to return from
the Fast Interrupt service routine.
If there is another vector address to be used for the fast interrupt processing, instead of the default
INT_VECTOR_ADDR_xx, the following macros can be defined in appconfig.h
INTC_FIVA0_INIT fastint0ISR
or
INTC_FIVA1_INIT fastint1ISR
where fastint0ISR and fastint1ISR are the placeholders for the fast interrupt service
routine names.
2-28
Targeting 56F8xxx Platform
FREESCALE SEMICONDUCTOR

Advertisement

Table of Contents
loading

Table of Contents