当前位置:首页 > 单片机 > 单片机
[导读]1.引 言:中断技术的应用大大提高了CPU的有效使用率,有效提高了资源的利用率。中断的性能同时也就成了衡量芯片性能的标准。新开发的芯片增加了很多的中断源,如 PIC16F877的中断源已经达到14个,可谓相当丰富;但同

1.引 言:

中断技术的应用大大提高了CPU的有效使用率,有效提高了资源的利用率。中断的性能同时也就成了衡量芯片性能的标准。新开发的芯片增加了很多的中断源,如 PIC16F877的中断源已经达到14个,可谓相当丰富;但同时也带来了一些难题:如此多的中断源在处理时很容易产生中断冲突,如何有效的处理中断到达时的时序,其算法应该如何实现成了首先需要解决的问题

2.中断处理技术

为了解决多中断带来的问题,有必要清楚单个中断到达时的处理技术,首先简要介绍中断的基本原理:计算机在执行某一程序过程中,由于计算机系统内外原因,而必须中止原程序的执行,转去执行相应的处理程序,待处理结束后再回来继续执行中止程序。当只有一个事件被响应,进入中断执行中断程序,这较易被处理,当两个,三个,甚至更多的中断同时产生的时候,处理起来就复杂多了,对于PIC系列单片机,其设计上虽然有很多中断,但是并没有规定中断的优先级。当遇到中断的时候,不做任何判断,而是先把指针指向0004H(中断起始地址),至于接下来如何操作则完全交给用户"软处理"完成。其中断时序图如下:

INT引脚中断时序图

其中时序图说明如下:

(1)中断开销时间=3~4TCY,取决于是单周期还是双周期指令,这里的TCY为指令周期

(2)CLKOUT信号仅在RC振荡器下有效。

(3)INTF标志可在Q4~Q1期间的任何的时候把其置成高电平。

如果正当全局中断允许位GIE清零(禁止中断)时发生中断,GIE位可能会被用户的中断服务程序(RETFIE指令)无意地重新开放,能引起该事件发生有以下情况:

1. 在一个中断被响应时执行一条对GIE位置1的指令;

2. 程序正在转向中断矢量并执行中断服务程序;

在执行中断返回指令RETFIE后中断服务程序完成。这将引起GIE位被置1(开放中断)并且程序返回一条指令,而这条指令的下一条指令将禁止中断。

要确保整个中断被禁止的方法是通过以下程序代码使GIE位清零:

loop BCF INTCON,GIE
BTFCS INTCON,GIE
GOTO loop

3.多路中断处理技术

以上方法不能解决多路中断问题,因此有必要具体分析一下当最坏的情况发生时,即多路中断同时出现时的中断处理过程。

怎样出现的中断才能称为"多路中断同时出现"呢?通过上面的时序图,可以得出这样的结论:

(1)当一个中断产生时,在一个周期范围内必然产生一个中断标志,由此触发全局中断禁止位。(2)判断中断的类型就是判断其对应中断的标志位。

(3)在第一个诱发中断源产生中断时开始,到中断程序执行完成的范围内,如果有其它中断发生,那么都称为"多路中断同时出现"。

要处理多路中断问题,中断处理程序的算法大体上可以分为两类:弱中断优先级(使用CALL和RETURN方式)和强中断优先级(使用GOTO方式)。其程序结构图如下:

设第n个子程序的运行时间为Rn;同一个中断源的两次中断最小时间间隔In,在中断处理程序结构1中,中断1,中断2,中断3的优先权级为中断1>中断 2>中断3,这种方法在中断处理中广为使用。对于具有抢先优先级要求的程序可以通过第二个程序结构完成,即每执行完一个中断程序都重新检查该中断程序的中断标志位,如果其标志位又被置位,则执行该中断。为了确保第二个中断能够执行必须要求R1<I1,同样第三个能够执行的条件是R1+R2< I1+I2,第n个中断能够被执行的条件是Σ(Rn)<Σ(In),同时这也是程序能从中断中正常跳转出来的条件。对于普通的程序设计,这样的优先级一般能够满足用户的使用需求,但对于较大的程序设计往往需要更高的优先级甚至超优先级,也就是说即使正在执行中断程序,当"超优先级"中断到来的时候,马上就要停止当前工作,而去执行"超优先级"中断。要实现这种中断模式,完全可以在中断程序中添加一个或者几个判断指令来实现。以上图的GOTO结构方式为例,为了使ISR1拥有超高优先级,可以在ISR2中断程序中加入如下指令:
BTFSC INT1,INTIF ;判断INT1是否有中断
GOTO INT1 ;是!执行INT1中断
如果ISR2的程序较长或者ISR1的中断级较高,可以在ISR2中加入多条这样的语句。同样道理,为了形成ISR2的次高优先级,可以在ISR3中加入指令:
BTFSC INT2,INTIF ;判断INT2是否有中断
GOTO INT2 ;是!执行INT2中断

由此可以达到预期效果,这种方法主要是基于每个子程序的执行时间比较长而产生的,如果每个中断程序的执行时间都很短,那么也就没有必要牺牲这一个指令周期了,所以程序的设计应该力求中断的简洁。

为了能够编写好一个简洁的中断程序,应抓住中断的特点是具有实时性,针对实时中断数据采集系统,也就是中断的特点在于数据的采集。因此在中断程序中只应该处理数据采集和标志位的设置,而将数据的处理放在中断之外,由主程序通过循环检测执行数据处理工作,具体做法:先开辟一个"储存缓冲区",作为采集来的数据的传递媒体,即存储采集数据,等待主程序的处理;中断程序负责数据的采集,并且将采集来的数据值赋给"存储缓冲区";主程序通过条件循环语句反复检测" 存储缓冲区"情况,及时处理采集信息。这样在处理方法既能有效的实现中断的功能,又可以极大的缩减每个中断的时间,提高整个程序的反应速度。

4.结束语:

从上看出,灵活地应用中断,不但可以大量的节省CPU资源,而且能够使程序更加简化,具有更高的实时性和稳定性。在实际应用中应该注意将任务合理分配给中断和主程序,二者要分工明确,接口简单。这其中的技巧还需要在实践中多多摸索与体会。


 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

特朗普集团近日取消了其新推出的T1智能手机“将在美国制造”的宣传标语,此举源于外界对这款手机能否以当前定价在美国本土生产的质疑。

关键字: 特朗普 苹果 AI

美国总统特朗普在公开场合表示,他已要求苹果公司CEO蒂姆·库克停止在印度建厂,矛头直指该公司生产多元化的计划。

关键字: 特朗普 苹果 AI

4月10日消息,据媒体报道,美国总统特朗普宣布,美国对部分贸易伙伴暂停90天执行新关税政策,同时对中国的关税提高到125%,该消息公布后苹果股价飙升了15%。这次反弹使苹果市值增加了4000多亿美元,目前苹果市值接近3万...

关键字: 特朗普 AI 人工智能 特斯拉

3月25日消息,据报道,当地时间3月20日,美国总统特朗普在社交媒体平台“真实社交”上发文写道:“那些被抓到破坏特斯拉的人,将有很大可能被判入狱长达20年,这包括资助(破坏特斯拉汽车)者,我们正在寻找你。”

关键字: 特朗普 AI 人工智能 特斯拉

1月22日消息,刚刚,新任美国总统特朗普放出重磅消息,将全力支持美国AI发展。

关键字: 特朗普 AI 人工智能

特朗普先生有两件事一定会载入史册,一个是筑墙,一个是挖坑。在美墨边境筑墙的口号确保边境安全,降低因非法移民引起的犯罪率过高问题;在中美科技产业之间挖坑的口号也是安全,美国企业不得使用对美国国家安全构成威胁的电信设备,总统...

关键字: 特朗普 孤立主义 科技产业

据路透社1月17日消息显示,知情人士透露,特朗普已通知英特尔、铠侠在内的几家华为供应商,将要撤销其对华为的出货的部分许可证,同时将拒绝其他数十个向华为供货的申请。据透露,共有4家公司的8份许可被撤销。另外,相关公司收到撤...

关键字: 华为 芯片 特朗普

曾在2018年时被美国总统特朗普称作“世界第八奇迹”的富士康集团在美国威斯康星州投资建设的LCD显示屏工厂项目,如今却因为富士康将项目大幅缩水并拒绝签订新的合同而陷入了僵局。这也导致富士康无法从当地政府那里获得约40亿美...

关键字: 特朗普 富士康

今年5月,因自己发布的推文被贴上“无确凿依据”标签而与推特发生激烈争执后,美国总统特朗普签署了一项行政令,下令要求重审《通信规范法》第230条。

关键字: 谷歌 facebook 特朗普

众所周知,寄往白宫的所有邮件在到达白宫之前都会在他地进行分类和筛选。9月19日,根据美国相关执法官员的通报,本周早些时候,执法人员截获了一个寄给特朗普总统的包裹,该包裹内包含蓖麻毒蛋白。

关键字: 美国 白宫 特朗普
关闭