当前位置:首页 > > 电源漫谈

MCU在正常的运行中,总是会遇到一些突然发生的事情,这些事情往往是MCU的硬件驱动的,和MCU的运行是异步关系的一些高优先级事件,这些事件可以打断MCU的正常代码运行,从而去操作另外的事情,这个事件就是中断,它需要去做的事情就是中断服务程序ISR.打个比方,一个人正在工作,突然口渴了想喝水,那么"喝水"这个比"工作"更优先的事件就可以打断工作。本文主要针对16MCUDSC的中断处理系统进行一些讨论。

1 中断向量的位置及执行示意图

首先我们简要介绍一下中断处理系统。16MCU有一个中断向量系统,这个向量系统可以支持高达8个不可maskTraps源,及高达246个普通中断源。有人会问,什么是Traps源?这里其实就是如前面所描述的那样,它是不可屏蔽的中断,这些中断可以表示一些硬件或者软件上的故障发生。

在这些芯片中,每一个中断源都可以指定为7个不同的优先级,即从0-7的优先级。大家都知道进到中断和出中断是需要时间的,一般而言,基本的进入中断的延时为3个指令周期,而出中断延时为四个指令周期。这就是16MCUDSC的中断处理系统的一个基本认识。

每一个中断源,都可以触发一个独立的代码段的执行,这个独立的代码段就称之为中断服务程序ISR,而每一个ISR代码的起始地址是存储在芯片Flash的主中断向量表中,即IVT中。这里需要注意的是,每一个中断向量都是一个24位的地址。

2 芯片FLASH存储的中断向量表及辅助中断向量表

从上图2可以看出,在MCU内部,用户的代码是放在中断向量表之后的,同时,我们也可以看出,除了中断向量表IVT之外,有的芯片还存在一个辅助中断向量表AIVT.

3 辅助中断向量的作用

辅助中断向量AIVT的主要作用是提供一种在不同应用之间切换的方式,这种切换不需要重新编程中断向量,另一种情况,比如说评估采用不同的软件算法的两个应用的切换等。

4 辅助中断向量的定义和使能

当定义了Boot Segment后,并且AIVT使能之后,辅助中断向量AIVT才可以使用。除了在配置位AIVTDIS上使能AIVT之外,还需要在特殊功能寄存器INTCON2中的AIVTEN位来使能它。当使能AIVT后,所有的中断和中断处理过程都会使用AIVT而不是用IVT了,这一点需要注意。

5 辅助中断向量表的FLASH位置

6 辅助中断向量的位置

AIVTFLASH中的位置起始于Boot Segment的最后一个PAGE的第一个半页,这个起始位置由BSLIM来定义(具体某一个中断向量的地址由页地址和偏移地址决定),如图5所示。第二个半页实际上是不可以使用的,这里需要注意BSLIM的单位是PAGE

7 Boot SegmentAIVT的关系

8 BOOT SegmentAIVT的实现

这里我们举例说明,当我们设置三个PAGE作为BOOT Segment时,这里将设置BSLIM0x1FFC,最低的两位是0,确保实现3PAGE.具体的FLASH的位置在图7中可以了解。

总结,以上初步介绍了16MCU的中断处理系统的一些基本的特性,后面我们将继续介绍这一话题。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
关闭