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

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

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被使能。

2.9 外设中断寄存器

外设中断寄存器包括如下几种:

外中断向量寄存器(PIVR)

外设中断请求寄存器0(PIRQ0)

外设中断请求寄存器1(PIRQ1)

外设中断请求寄存器2(PIRQ2) 与用户

外设中断应答寄存器0(PIACKR0) 无关,

编程忽略

外设中断应答寄存器(PIACKR1)

外设中断应答寄存器2(PIACKR2)

外设中断请求寄存器和外设中断应答寄存器都属于外

设中断扩展模块用来向CPU产生INT1-INT6中断请求

的内部寄存器。这些寄存器主要用于测试目的,而

不用于用户应用程序,在编程时可忽略。

返回列表