首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

哈工大DSP精品讲义!!!(连载)

INT5(级别5)

中断优先级 中断名称 外设中断向量 描述

42 SPINT 0005h 低优先级SPI中断

43 RXINT 0006h 低优先级SCI接收中断

44 TXINT 0007h 低优先级SCI发送中断

45 CANMBINT 0040h 低优先级CAN邮箱中断

46 CANERINT 0040h 低优先级CAN错误中断

INT6(级别6)

中断优先级 中断名称 外设中断向量 描述

47 ADCINT 0004h 低优先级ADC中断 48 XINT1 0001h 低优先级外中断

49 XINT2 0011h 低优先级外中断

N/A TRAP 0022h 陷阱中断

N/A 假中断向量 0000h 假中断向量


2.4 外设中断扩展控制器

LF2407采用一个外设中断扩展(PIE)控制器来专门管

理来自各种外设或外部引脚的中断请求。下图为外

设中断扩展模块图。

具体寄存器为:PIRQR0-PIRQR2

PIE 数据

总线

优先级别1 INT1

IRQ REN

地址

PIRQR0 总线

INT2

优先级别2

IRQ REN

CPU

PIRQR1

优先级别6

INT6

IRQ REN

IACK

PIRQTn

PIACKRn

PIVR

2.4.1 中断层次

通过中断请求系统中的一个两级中断来扩展中断个数,

2407 可响应的中断个数数量很多,DSP的中断请求/

应答逻辑和中断服务程序软件都有两级层次的中断。

2.4.2 中断请求的结构

在低层次中断,从几个外设来的外设中断请求(PIRQ)

在中断控制器处进行或运算,产生一个INTn中断;在

高层次中断,从INTn中断请求产生一个到CPU的中断。

2.4.3 中断应答

外设产生中断请求后,经PIE控制器译码,决定谁被

响应,CPU通过赋予程序地址总线一个值—— 中断向

量,决定哪个中断请求被应答。


2.5 中断向量

为使CPU能够区别不同外设引起中断,在每个外设中断

请求有效时,都会产生一个唯一的外设中断向量,

这个外设中断向量被装载到外设中断向量寄存器

(PIVR)。

CPU响应外设中断时,从PIVR中读取相应的中断向量,

转到相关的中断服务程序入口。

LF2407 有两个向量表。

(1) CPU向量表用来获取响应CPU中断请求的一级通用

中断服务子程序(GISR)。

(2) 外设向量表用来获取响应某一特定外设事件的特

定中断服务子程序(SISR)。

GISR中的程序可读出PIVR中的值,在保存必要的上下

文之后,用PIVR中的值来产生一个转到SISR的向量。


2.5.1 假中断向量

假中断向量特性可以保证系统一直可靠安全地运行,

而不会进入无法预料的中断死循环中。

以下两种情况会产生假中断:

(1)CPU执行一个软件中断指令,并且指令具有一个与

外设中断(通常为INT1一INT6)相关的变量。

(2)当外设发出中断请求,但是其INTn标志位却在CPU

应答请求之前已经被清0。

在上述两种情况下,没有外设中断请求送到中断控制

器,因此控制器不知道哪个外设中断向量装入到

PIVR,此时向PIVR中装入假中断向量。

2.5.2 软件层次

中断服务子程序的层次有两级:通用中断服务子程序

(GISR)和特定中断服务子程序(SISR)

对于每个向CPU发送的可屏蔽高优先级中断请求(INTl

一INT6),从PIVR获取外设中断向量之前,必须在

GISR中保存必要的上下文。从外设中断向量寄存器

(PIVR)中获取外设中断向量。转移到SISR的地址入 口。

在SISR中执行对该外设事件的响应。

当程序进入中断服务程序后,所有的可屏蔽中断都被

屏蔽。GISR必须在中断被重新使能之前读取PIVR中

的值,否则在另一个中断请求发生之后,PIVR中将

装入另一个中断请求的偏移量,这将导致原外设中

断向量参数的永久丢失。

2.5.3 不可屏蔽中断

LF2407 DSP 无NMI引脚,在访问无效的地址时,不

可屏蔽中断(NMI)就会发出请求。当NMI被响应后,

程序将转到不可屏蔽中断向量入口地址0024h处。

LF2407 DSP没有与NMI相对应的控制寄存器。

2.5.4 全局中断使能

INTM为全局中断使能位,在初始化程序和主程序中,常常需要使用该位对DSP中断进行打开和关闭操作。

特别是初始化过程中,需要关中断,而在主程序开

始执行时,需要开中断。

SEC INTM; 关中断

CLRC INTM; 开中断

进入中断服务程序时,系统自动关闭中断,不允许在 中断服务程序中响应其他中断。

从中断服务程序返回时需要重新打开中断。

2.6 中断响应的流成

外设模块的中断响应流程

开始

外设中断产生

中断产生逻辑等待,

外设中断寄存器 IE位置1或IF位被软

(PR)中的中断标 件清0

志位IF置1

IE位被S/W置1

N

中断使能IE=1?

Y

向PIE控制器发送外

设中断请求

外设中断请求位置 1 ,并向INTn发送 中断请求

CPU接收INTn

[此贴子已经被作者于2009-6-23 15:28:56编辑过]

2.7 中断等待时间

中断响应的等待时间包括:外设同步接口时间、CPU

响应时间、ISR等待时间,分别介绍如下:

(1)外设同步接口时间是指为了响应一个PlE控制器可

以识别的中断事件,而产生一个中断请求所花的时

间和转换后将请求发送至CPU的时间。

(2)CPU的响应时间指的是CPU识别出已经被使能的中

断请求、响应中断、清除流水线、并且开始捕获来

自CPU中断向量的第一条指令所花费的时间。

最小的CPU的响应时间是4个CPU指令周期。如果一个

更高优先级的可屏蔽中断在最小的等待周期被请

求,该中断将被屏蔽,直到正在工作的ISR重新使

能该中断。当中断请求发生在一个不可中断的操

作期间,那么等待时间更长。例如:一个循环程

序环、一条多周期指令的执行,或处于一个等待

状态的访问期间。

(3)ISR等待时间是指为了响应产生应答的中断事件,

而到达特定中断服务程序(SlSR)所花费的时间。

该时间长短根据用户响应中断后保存上下文的不

同而有所变化。

2.8 CPU中断寄存器

CPU中断寄存器包括:(1)中断标志寄存器(IFR);(2)

中断屏蔽寄存器(IMR)。

2.8.1 CPU中断标志寄存器 (IFR)

IFR包含所有可屏蔽中断的标志位,用于识别和清除

挂号的中断。当一个可屏蔽中断被请求时,中断

标志寄存器的相应标志位被置1。如果对应中断屏

蔽寄存器中的中断使能位也为1,则该中断请求被

送到CPU,并设置IFR的相应位,此时该中断正被

挂号或等待响应。

读取IFR可以识别挂号的中断,向相应的IFR位写1将

清除已挂号的中断。

该寄存器映射到数据存储器空间为0006h。

位15-6:保留位。

位5-0 :分别为INT6-INT1的中断标志位。

0:无中断挂号,

1:表示有INTn的中断挂号。

2.8.2 CPU中断屏蔽寄存器(IMR)

IMR中含所有中断级(INT1-INT6)的屏蔽位,读IMR

可以识别出已屏蔽或使能的中断级,而向IMR中写,

则可屏蔽中断或使能中断。为了使能中断,应设置

相应的IMR位为1,而屏蔽中断时只需将相应的IMR

位设为0。

中断屏蔽寄存器-IMR,映射到数据存储器空间0004h。

位15-6:保留位。

位5-0:分别为INT6-INT1中断的屏蔽位。

0:中断INTn被屏蔽。

1:中断INTn被使能。

返回列表