中断触发方式的比较
来源:互联网 发布:淘宝子账号设置权重 编辑:程序博客网 时间:2024/06/05 03:38
沿触发: 这是很最常见的触发方式,我们可以用数字电路的方法来解释它的特性。沿触发应该应触发器来描述: 输入引脚(当作触发器的CLK) ----> 触发器------> 中断控制器 ,当输入引脚的相应的沿到来时,就会将触发器置1,并触发中断,触发器会一直保持电平1除非在ISR中用一条语句清0,否则会不断的触发中断,这也就是每次触发中断都要清0的原因。当有高优先级的中断运行后退出时,处理器检测到触发器的值为1,所以依然会进入中断服务程序。
电平触发: 有的时候,边沿触发很容易产生毛刺并导致误中断,这时候就要使用电平触发,电平触发是持续触发,可以用数字电路的缓冲器来描述
输入引脚 ----> 缓冲器 ----> 中断控制器 , 缓冲器的作用就是对信号整形,并增加驱动能力,缓冲器输出的数据和输入的数据相同,可以看出输入引脚的电平直接放映到输出引脚,以高电平触发为例,只要输入引脚的电平为高就立即触发中断,当ISR退出时如果电平依然为高则会再次触发中断,这也就是持续触发的来由,所以采用电平触发时必须保证电平的持续时间不能太长,在ISR中可能需要适当的延时操作保证退出时电平为低,或者读出电平值,电平变低时才退出。 在带用 OS的系统中,很多关键的数据或者代码区(临界区)都需要关闭中断,那么它对中断有什么影响呢? 电平触发如果电平的持续时间比较短,很可能在关闭中断后再开中断之前电平已经变低,结果开中断后中断就没有触发,结果是这次中断被漏掉了,所以在带OS的系统中一定不能关闭中断太久,在允许中断嵌套的情况下必须保证高优先级的中断执行时间不能超过电平的持续时间。 综合考虑,电平触发的持续时间不能太短也不能太长,在自己的系统中要仔细地考虑好中断地持续时间。
另外,开关中断也是很讲究的,在我的开发中我就发现一种“ISR优先级翻转现象”,比如我有三个ISR,按照优先级的高低次序一次是 ISR0 ISR1 ISR2,我在ISR3 关闭ISR0的中断(因为共享数据需要互斥),可知ISR3 运行时ISR0不能得到响应,然而ISR1的优先级高于ISR2,所以在支持嵌套的情况下ISR1会打断ISR2的执行,显然这时即使ISR0中断到来也不会得到响应,这也就是我遇到的ISR优先级翻转问题,当然这可能是我编写程序的风格不好,但是分析起来也是很有趣的,类似于任务的优先级翻转。
- 中断触发方式的比较
- 中断触发方式的比较
- 中断触发方式的比较
- 【转】中断触发方式的比较
- 关于中断触发方式的选择
- 中断触发方式
- 关于51单片机“外部中断触发方式”的经验总结
- 关于51单片机“外部中断触发方式”的经验总结
- 关于51单片机外部中断的触发方式
- 中断与查询方式的比较
- JavaScript几个比较事件触发方式的记录
- set_irq_type() -- 设置中断触发类型/方式
- set_irq_type() -- 设置中断触发类型/方式
- ARM9260内部中断和外部中断触发方式
- 中断方式与轮询方式比较
- 中断方式与轮询方式比较
- 中断方式与轮询方式比较
- 示波器的触发源和触发方式
- Xms Xmx PermSize MaxPermSize 区别
- CF Round#10
- 音视频解决方案中的即时通讯开发技术
- OpenWRT自定义组件和编译
- 谈谈语音视频聊天
- 中断触发方式的比较
- (3)校正聚簇因子(CLUSTERING_FACTOR )——下
- windows程序员进阶系列:《软件调试》之四:断点和单步调试
- jQuery笔记
- android不能使用udp获取数据解决
- 萤火虫为增加LED亮度带来灵感
- 监听连接时间过长的解决
- 纳米发电机:摩擦静电驱动手机
- SAP R3 主流系统EAI接口技术剖析