打印

中断的优先级的问题...

[复制链接]
1464|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zq1987731|  楼主 | 2008-11-29 11:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我的程序中有如下中断程序:

定时器0:1ms触发一次,最多对6个变量+1(-1)操作,据说这个叫定时器复用
定时器1:作为计数器用,外部脉冲上升沿有效,计数溢出就触发中断进行相关操作
定时器2:10ms触发一次,最多64个变量,还是定时器复用
定时器3:100ms触发一次,最多256个变量,仍然是定时器复用
串口   :串口寄存器TX空或者RX满都会触发中断,然后本机负责校验帧头,帧头同步的话就接收数据,计算CRC,帧尾,然后回应主机接收是否成功。
I2C    :400Kb速率对外部FRAM进行读写,FIFO空(字节发出)以及有一个字节(收到一个字节)均会触发中断。
SPI    :1.4Mb速率控制关键的系统数字量输入74HC165级联,以及数字量输出74HC595级联。
==========================================================
我现在的优先级设置——
快速中断(可打断普通中断):
1、定时器0
2、SPI
3、I2C
4、串口
普通中断:
1、定时器1
2、定时器2
3、定时器3
==========================================================
现在总觉得很不妥的样子,希望大家能给些建议



相关帖子

沙发
ejack| | 2008-11-29 12:32 | 只看该作者

你的定时器2、3没必要硬件实现吧

使用特权

评论回复
板凳
ayb_ice| | 2008-11-29 12:36 | 只看该作者

定时器中断频繁的设高点就是了

否则极端情况可能会丢失,但51也只有2个优先级,其它的MCU一般还不可以中断嵌套。。。

使用特权

评论回复
地板
zq1987731|  楼主 | 2008-11-29 13:29 | 只看该作者

其实主要原因...

我之前用51(AT89S52)的时候,定时器有3个——0,1,2
因为51的速度关系,接的东西一多...比如EEPROM,LCD,键盘,AD,DA,RTC等等,同时还要一大堆的内部资源。
最后没办法只好上了现在用的这个ARM7,裸奔当单片机用,然后资源算是够了,为了物尽其用,既然片内有的我就想都用上,比如说定时器2和定时器3,反正闲着也是闲着,到不如分担下定时器0的负担。
毕竟定时器0每1ms就中断一次,如果每个1ms都对那300多个变量进行判定,比如分别判定对应的单元1ms中断够不够10次(10ms),够不够100次(100ms),然后再分别对它们增/减1操作,这样定时器0的中断程序就会很长,非常多的CPU资源就被浪费了,同时在处理定时器0的时候万一串口来了关键的命令帧,这头还在悠哉游哉得用中断处理定时器复用呢,岂不是要多次申请重发了么...这样主机那头发的命令等到被执行要延时好一段时间的...

使用特权

评论回复
5
ayb_ice| | 2008-11-29 13:35 | 只看该作者

10ms以上的完全可以放在主程序处理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

95

主题

759

帖子

3

粉丝