打印

有关单片机中断中使用模块的问题?

[复制链接]
1588|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
反质子|  楼主 | 2012-5-7 16:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 反质子 于 2012-5-7 22:20 编辑

本人的单片机架构中采用了所长以前说的“弱实时”概念,即一些对时间要求不苛刻,但又必须在一个时间段内完成的模块。我将这些模块放在定时器中断里面分时执行,类似这样的模块有:AD采样,按键扫描,数码管驱动。

  本人觉得“弱实时”的概念很好,可以将外部的信息量及时解析转化为一个消息,而且这些模块的运行时间极短。但是现在的问题是,有人认为应该尽量减少在中断里面执行语句,理由是系统复杂了会怎么怎么样。我并不否认中断里面应该简洁,但是像这种底层驱动的模块,可以及时的响应为什么一定要放到主循环中呢

请各位大虾发表下意见,看单片机定时器中断中究竟应该怎么使用为好?或者介绍一下自己的使用经验。感激不尽啊,小弟可能要出一个规定让部门的人去评审中断的使用

相关帖子

沙发
NE5532| | 2012-5-7 21:21 | 只看该作者
其实楼主还是晕的,一切设计都是从需求出发的。如果处理中断的同时,没有其他事情需要处理,全部放中断里执行不是最简单?

凡是讲“实时”必须给出一个定义范围,所谓的弱实时,其实也是个伪定义,泛指例如人机交互等时延不会造成重大损失的场合,与之对应的硬实时,指飞机翅膀控制等稍有延迟将出人命的场合。

除了键盘和显示比较明确,AD就是根本不明确的概念,我要你AD一个上MHz的信号,你说这个任务是硬的还是软的?你还敢拿出来写么?

只有在中断内执行时间长,或者等待外部操作的时间长(例如键盘要等待操作者释放),而且有不能中断的任务(比如LED数码管扫描显示)才把这种长中断“切”成若干次短中断来响应。

所以你的评审就写四个字就是了“按需求做”,包你高升。

使用特权

评论回复
板凳
反质子|  楼主 | 2012-5-7 22:15 | 只看该作者
AD 是没写清楚

只是获取AD采样值  就是读ADC寄存器的值啊

NE5532我看了你的回复 你依然没说出个所以然来,不要光讲大道理好不好,谁不知道模块执行时间长就不要放在中断里面,我是在问如果像这种 只读一个寄存器或 只读一个IO口 或 只设置IO口 的操作能不能就放在中断里面执行了

按需求做,需求会把你固件的架构全部说清楚吗

使用特权

评论回复
地板
反质子|  楼主 | 2012-5-7 22:16 | 只看该作者
为什么 不能说 是弱实时呢,这些模块就是    对时间要求不苛刻,但又必须在一个时间段内完成的

使用特权

评论回复
5
反质子|  楼主 | 2012-5-7 22:17 | 只看该作者
忘记 说清楚了 ,是定时器中断,非其它中断

使用特权

评论回复
6
NE5532| | 2012-5-7 22:41 | 只看该作者
楼主执迷不悟啊,你写在里面或者写在外面,单片机又不会爆炸,谁规定不准写里面或者写外面了?你这个就是个大问题,不讲大道理讲什么?你有具体应用条件么?有需求分析么?有实时性要求么?

使用特权

评论回复
7
风险酱油| | 2012-5-8 09:12 | 只看该作者
需求是个好东西,我想LZ的想法是希望从需求的角度分清当前应用场合下,放里面还是放外面更优吧!

使用特权

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

本版积分规则

个人签名:我就是下一个程序匠人~

12

主题

338

帖子

0

粉丝