打印

定时中断后TH TL还会继续累加吗?

[复制链接]
2547|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
skyto|  楼主 | 2010-1-25 10:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
HWM| | 2010-1-25 11:05 | 只看该作者
不关计数器运行标志(TR),其当然继续自行其是。如果定时器中断服务时间太长,以至于期间又有新的中断产生,则在退出中断服务后将马上进入新的一次中断服务(注意:此时的定时服务将被延迟)。但如果实在服务时间太长,以至于多个定时器中断发生,则将只响应最后的那个中断(前面中断都被覆盖)。

使用特权

评论回复
板凳
冷漠| | 2010-1-25 11:37 | 只看该作者
本帖最后由 冷漠 于 2010-1-25 11:39 编辑
但如果实在服务时间太长,以至于多个定时器中断发生,则将只响应最后的那个中断(前面中断都被覆盖)。



         8952的定时器0/1 的中断标志是由进入相应中断向量之后才会由硬件自动清除的,不是由RETI指令清除的。
       所以,如果多个定时器发生,无论被推迟多久,都不会被其他中断响应覆盖,必将按设定/内部优先级顺序得到执行。

按照工程逻辑,即使超过死线留给程序员处理,TF0/TF1 标志也不应该随便丢失。处理器设计厂商这一点不会自作主张。

使用特权

评论回复
地板
HWM| | 2010-1-25 16:16 | 只看该作者
那是指同一定时器由于发生多次计数溢出而产生的溢出中断覆盖。

使用特权

评论回复
5
冷漠| | 2010-1-25 16:31 | 只看该作者
明白。
但如果实在服务时间太长,以至于超过定时器自身中断间隔(一次或多次),则将只响应最后的那次间隔中断(前面中断都被覆盖)。

使用特权

评论回复
6
szshawn2010| | 2010-1-26 15:02 | 只看该作者
本帖最后由 szshawn2010 于 2010-1-26 15:30 编辑

一直玩的都是 8位的芯片.
对中断的问题,也只是略懂.看到LZ发问,就有点技痒.说的不对,别拍我


好多芯片 堆栈等级也就是五级或四级.

这就意味着,如果 中断同时出的话,多过了五个或四个那么会致使MCU堆栈混乱的.因此编程员会严格处理这方面的需求

同时,中断会有等级的优先次序. 一般是可以自已设定的.

当中断时,又有中断发生.应该是按中断的优先等级进行嵌套的.

如果是同一类别的中断,在中断过程中再次发生中断,是很少有不可能的.通常每一次的中断发生,其相关的标志位会置1或清零.中断子程序结束时,软件进行清零或置1.


-----------
而且楼主的假设又好像很难成立.除非,你的中断子程序使用死循环.假设一条指令的时间是2uS,那么1mS就是500条指令,2ms就是1000条指令.除非你不停的跳不停的循环.2mS是什么概念呢?通常一次按键防抖延时也要20ms.也就是说,你随便一个按键,完整的过程至少要有60mS.用人的感觉来看,60ms一瞬间,MCU已经运行了3000条指令.况且MCU的ROM也不过1K或几K,换句话说,也不过1000多条指令或几千条指令.(仅限8位的消费类MCU)

使用特权

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

本版积分规则

1

主题

2

帖子

1

粉丝