Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
162
Добавлен:
01.03.2016
Размер:
3.56 Mб
Скачать

Interrupt controller (ITC)

RM0016

 

 

6 Interrupt controller (ITC)

6.1ITC introduction

Management of hardware interrupts

External interrupt capability on most I/O pins with dedicated interrupt vector and edge sensitivity setting per port

Peripheral interrupt capability

Management of software interrupt (TRAP)

Nested or concurrent interrupt management with flexible interrupt priority and level management:

Up to 4 software programmable nesting levels

Up to 32 interrupt vectors fixed by hardware

2 non maskable events: RESET, TRAP

1 non-maskable top level hardware interrupt (TLI)

This interrupt management is based on:

Bit I1 and I0 of the CPU Condition Code register (CCR)

Software priority registers (ITC_SPRx)

Reset vector address 0x00 8000 at the beginning of program memory. In devices with boot ROM, the reset initialization routine is programmed in ROM by STMicroelectronics.

Fixed interrupt vector addresses located at the high addresses of the memory map (0x00 8004 to 0x00 807C) sorted by hardware priority order.

6.2Interrupt masking and processing flow

The interrupt masking is managed by bits I1 and I0 of the CCR register and by the ITC_SPRx registers which set the software priority level of each interrupt vector (see Table 8). The processing flow is shown in Figure 13.

When an interrupt request has to be serviced:

1.Normal processing is suspended at the end of the current instruction execution.

2.The PC, X,Y, A and CCR registers are saved onto the stack.

3.Bits I1 and I0 of CCR register are set according to the values in the ITC_SPRx registers corresponding to the serviced interrupt vector.

4.The PC is then loaded with the interrupt vector of the interrupt to service and the first instruction of the interrupt service routine is fetched .

The interrupt service routine should end with the IRET instruction which causes the content of the saved registers to be recovered from the stack. As a consequence of the IRET instruction, bits I1 and I0 are restored from the stack and the program execution resumes.

58/454

Doc ID 14587 Rev 9

RM0016

 

 

 

Interrupt controller (ITC)

 

 

 

 

 

 

 

 

Table 8.

Software priority levels

 

 

 

 

 

 

 

 

 

 

 

 

 

Software priority

Level

I1

I0

 

 

 

 

 

 

 

Level 0 (main)

Low

1

0

 

 

 

 

 

 

Level 1

 

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Level 2

 

High

0

0

 

 

 

 

 

 

Level 3 (= software priority disabled)

1

1

 

 

 

 

 

 

 

 

 

 

Figure 13. Interrupt processing flowchart

 

Y

 

Y

 

INTERRUPT

 

 

 

N

Interrupt has the same or a

N

 

lower software priority

 

 

 

than current one

 

 

FETCH NEXT

THE INTERRUPT

 

 

INSTRUCTION

STAYS PENDING

 

 

Y

Interrupt hashighera

softwarepriority than currentone

 

N

 

 

RESTORE PC, X, Y, A, CCR

EXECUTE

 

 

FROM STACK

INSTRUCTION

STACK PC, X, Y, A, CCR

 

 

LOAD I1:0 FROM INTERRUPT SW REG.

 

 

LOAD PC FROM INTERRUPT VECTOR

Caution: If the interrupt mask bits I0 and I1 are set within an interrupt service routine (ISR) with the instruction SIM, removal of the interrupt mask with RIM causes the software priority to be set to level 0.

To restore the correct priority when disabling and enabling interrupts inside an ISR, follow the procedures presented in Table 8 for disabling and enabling the interrupts.

Table 9.

Interrupt enabling/disabling inside an ISR

 

Disabling the interrupts

Enabling the interrupts

 

 

 

#asm

 

#asm

PUSH CC

 

 

PUSH ISR_CC(1)

POP ISR_CC(1)

POP CC

SIM

 

 

#endasm

#endasm

 

 

 

 

 

 

1. IRS_CC is a variable which stores the current value of the CC register.

Doc ID 14587 Rev 9

59/454

Соседние файлы в папке Минимум документации STM8_1