1 interrupt recognition, 2 interrupt prioritization, 3 interrupt vector determination – Freescale Semiconductor MCF5480 User Manual

Page 355: Information, see

Advertising
background image

Introduction

MCF548x Reference Manual, Rev. 3

Freescale Semiconductor

13-3

8 fully-programmable interrupt sources are mapped into a single interrupt level. The “fixed” interrupt

source is hardwired to the given level and represents the mid-point of the priority within the level. For the

fully-programmable interrupt sources, the 3-bit level and the 3-bit priority within the level are defined in

the 8-bit interrupt control register (ICRn).
The operation of the interrupt controller can be broadly partitioned into three activities:

Recognition

Prioritization

Vector determination during IACK

13.1.1.1.1

Interrupt Recognition

The interrupt controller continuously examines the request sources and the interrupt mask register to

determine if there are active requests. This is the recognition phase.

13.1.1.1.2

Interrupt Prioritization

As an active request is detected, it is translated into the programmed interrupt level, and the resulting 7-bit

decoded priority level (IRQ[7:1]) is driven out of the interrupt controller.

13.1.1.1.3

Interrupt Vector Determination

Once the core has sampled for pending interrupts and begun interrupt exception processing, it generates

an interrupt acknowledge cycle (IACK). The IACK transfer is treated as a memory-mapped byte read by

the processor and routed to the interrupt controller. Next, the interrupt controller extracts the level being

acknowledged from address bits[4:2], determines the highest priority interrupt request active for that level,

and returns the 8-bit interrupt vector for that request to complete the cycle. The 8-bit interrupt vector is

formed using the following algorithm:

vector_number = 64 + interrupt source number

Recall vector numbers 0—63 are reserved for the ColdFire processor and its internal exceptions. Thus, the

mapping of bit positions to vector numbers that apply are the following:

if interrupt source 1 is active and acknowledged,

then vector_number = 65

if interrupt source 2 is active and acknowledged,

then vector_number = 66

...

if interrupt source 8 is active and acknowledged,

then vector_number = 72

if interrupt source 9 is active and acknowledged,

then vector_number = 73

...

if interrupt source 63 is active and acknowledged,

then vector_number = 127

The net effect is a fixed mapping between the bit position within the source to the actual interrupt vector

number.
If there is no active interrupt source for the given level, a special “spurious interrupt” vector

(vector_number = 24) is returned, and it is the responsibility of the service routine to handle this error

situation.
Note this protocol implies the interrupting peripheral is not accessed during the acknowledge cycle since

the interrupt controller completely services the acknowledge. This means the interrupt source must be

Advertising
This manual is related to the following products: