电气知识|LPC2000系列ARM向量中断控制器(VIC)

   更新日期:2017-03-26     来源:建材之家    作者:安防之家    浏览:34    评论:0    
核心提示:向量中断控制器概述 ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。但是芯片内部有许多中断源, 最多可以有32个中断输入请求。向量中断控制器的作用就是允许哪些中断源可以产生中断、可以产生哪类中断、产生中断后执行哪段服务程序。 中断源列表 允许中断源产生中断 芯片内部许多部件都可以作为中断源,但并不是每个中断源都需要在中断情况下进行

电力检修|处理小电流接地故障的新思路

推荐简介:摘要:基于目前日趋完善的小电流接地选线技术和智能化的综合自动化系统及馈线自动化技术,提出全新的处理接地故障的新思路。阐述了利用馈线自动化技术隔离故障的过程,并表述了该新方法的实用意义。 中低压配电系统的中性点,一般采用不接地或经消弧线圈接地方式,称为小电流接地系统。该系统中发生单相接地故障时,尽管故障分量不大,但由于其他两相对地电压升为线电压,在没有消弧线圈的情况下,如果发......
安防之家讯:向量中断控制器概述

ARM7TDMI内核具有两个中断输入,分别为IRQ中断和FIQ中断。但是芯片内部有许多中断源, 最多可以有32个中断输入请求。向量中断控制器的作用就是允许哪些中断源可以产生中断、可以产生哪类中断、产生中断后执行哪段服务程序。 中断源列表 允许中断源产生中断

芯片内部许多部件都可以作为中断源,但并不是每个中断源都需要在中断情况下进行操作,也可以通过其它方法来处理各种状态。

比如通过串口发送一段数据,可以选择在一批发送结束后产生中断,然后在中断服务程序中发送下一批数据。也可以通过查询发送标志位来决定什么时候发送下一批数据。

允许中断源产生中断由寄存器VICIntEnable和VICIntEnClr控制,前者使能中断,后者禁止中断。

中断使能寄存器(VICIntEnable):

寄存器中每一位控制着一个中断源,各中断源的位置与中断源列表所示相同。向某位写入1时,允许对应的中断源产生中断。

中断使能清零寄存器(VICIntEnClr):

与中断使能寄存器的功能相反,向某位写入1时,禁止对应的中断源产生中断。

选择产生中断的类型

ARM7TDMI内核具有FIQ和IRQ两个中断输入,所有中断源产生的中断都可以选择产生其中一种中断。这通过中断选择寄存器完成。

中断选择寄存器(VICIntSelect):

寄存器中每一位控制着一个中断源,各中断源的位置与中断源列表所示相同。向某位写入1时,对应中断源产生的中断为FIQ中断,否则为IRQ中断。

中断类型

中断输入请求可以在VIC中被设置为以下三类:

FIQ中断:具有最高优先级;

向量IRQ中断:具有中等优先级;

非向量IRQ中断:具有最低优先级;

向量IRQ中断

VIC最多支持16个向量IRQ中断,这些中断被分为16个优先级,并且为每个优先级指定一个服务程序入口地址。在发生向量IRQ中断后,相应优先级的服务程序入口地址被装入向量地址寄存器VICVectAddr中,通过一条ARM指令即可跳转到相应的服务程序入口处,所以向量IRQ中断具有较快的中断响应。

非向量IRQ中断

任何中断源都可以设置为非向量IRQ中断。它与向量IRQ中断的区别在于前者不能为每个非向量IRQ中断源设置服务程序地址,而是所有的非向量IRQ中断都共用一个相同的服务程序入口地址。

当有多个中断源被设置为非向量IRQ中断时,需要在用户程序中识别中断源,并分别作出处理。所以非向量IRQ中断响应延时相对较长。

向量IRQ中断相关寄存器

VICVectCntl0~15和VICVectAddr0~15两类寄存器与向量IRQ中断设置有关,前者为中断源分配向量IRQ中断的优先级,后者为该中断优先级设置服务程序入口地址。寄存器名称最后的数字同时也代表该寄存器控制的向量IRQ中断的优先级,数值越小优先级越高。

注意:如果将同一个中断源分配给多个使能的向量IRQ中断,那么该中断源发生中断时,会使用最高优先级(最低编号)的寄存器设置。

向量IRQ中断相关寄存器

向量控制寄存器(VICVectCntl0~15):

VICVectCntlx[4:0]:分配给此优先级向量IRQ中断的中断源序号;

VICVectCntlx[5]:该位为1,使能当前优先级的向量IRQ中断。否则为禁止。

向量地址寄存器(VICVectAddr0~15):

该寄存器中存放对应优先级向量IRQ中断服务程序的入口地址。

非向量IRQ中断相关寄存器

向量地址寄存器(VICDefVectAddr):

VICDefVectAddr寄存器存放非向量中断服务程序的入口地址,当发生非向量中断时该寄存器中保存的地址存入VICVectAddr寄存器。

产生中断后的服务程序地址

在发生向量IRQ中断后,VIC能将对应中断的服务程序地址存入VICVectAddr寄存器中。如果为非向量中断,将把VICDefVectAddr寄存器的值存入该寄存器。在异常向量表的IRQ异常入口处放置一条指令,将VICVectAddr寄存器的内容装入程序计数器(PC),就可以跳转到当前中断的服务函数。 这样的设计可以减小中断响应延时。

向量地址寄存器(VICVectAddr):

中断状态寄存器

如果使用了多个非向量IRQ中断或多个FIQ中断,那么在发生中断后要在程序中查找中断源。通过IRQ状态寄存器和FIQ状态寄存器可以了解到这些中断源的中断请求状态。

任何在VIC中使能的中断都会把中断请求反映在“所有中断状态寄存器(VICRawIntr)”中。

所有中断状态寄存器(VICRawIntr):

FIQ状态寄存器(VICFIQStatus): IRQ状态寄存器(VICIRQStatus): 软件中断寄存器

在一些特殊场合或者调试时,可能需要使用软件强制产生某个中断请求。

软件中断寄存器(VICSoftInt):

软件中断清零寄存器(VICSoftIntClear): 保护使能寄存器

在某些场合可能需要禁止在用户模式下访问VIC寄存器,以提高软件的安全等级。

软件中断寄存器(VICSoftInt):

IRQ中断的设计实例

设置外部中断0产生向量IRQ中断后执行中断服务程序“IRQ_Eint0( )”。

图示IRQ中断的发生过程 使用VIC的注意要点

如果在片内RAM中调试程序,并使用了中断,那么必须将存储器映射控制设置为内部RAM模式;

将多个中断源设置为FIQ,将增加中断响应延时,所以建议FIQ中断只有一个中断源;

ADS1.2规定在定义中断服务函数时必须加入关键字“__irq”,保证函数返回时会切换处理器模式;

在退出中断服务程序时要清零相应外设的中断标志,以及VICVectAddr寄存器,为响应下次中断作好准备。

VIC相关启动代码分析

安防之家专注于各种家居的安防,监控,防盗,安防监控,安防器材,安防设备的新闻资讯和O2O电商导购服务,敬请登陆安防之家:http://anfang.jc68.com/
小程序码
 
打赏
 
更多>文章标签:安防之家
更多>同类安防监控资讯
0相关评论

推荐图文更多...
点击排行更多...
安防监控商机更多...
安防监控圈更多...
最新视频更多...
推荐产品更多...
陶瓷头条 | 空调头条 | 卫浴头条 | 洁具头条 | 油漆头条 | 涂料头条 | 地板头条 | 吊顶头条 | 衣柜头条 | 家居头条 | 博一建材 | 博一建材 | 建材群站 | 建材资讯 | 建材商机 | 建材产品 | 水泥头条 | 楼梯之家 | 门窗之家 | 老姚之家 | 灯饰之家 | 电气之家 | 全景头条 | 照明之家 | 防水之家 | 防盗之家 | 区快洞察 | 漳州建材 | 泉州建材 | 三明建材 | 莆田建材 | 合肥建材 | 宣城建材 | 池州建材 | 亳州建材 | 六安建材 | 巢湖建材 | 宿州建材 | 阜阳建材 | 滁州建材 | 黄山建材 | 安庆建材 | 铜陵建材 | 淮北建材 | 马鞍山建材 |
建材 | 双碳之家 | 企业之家 | 移动社区 | 关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图 | 排名推广 | 广告服务 | 积分换礼 | RSS订阅 | sitemap | 粤ICP备14017808号
(c)2015-2017 Bybc.cn SYSTEM All Rights Reserved
Powered by 安防之家