打印
[AVR单片机]

ATMEGA88PA两定时器相互影响

[复制链接]
2799|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuyanlbg|  楼主 | 2012-10-10 14:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用ATMEGA88PA,用T0定时32us中断,用T2定时64us中断,当两定时器同时工作时,T0的定时中断时间变为40多us了,关掉T2后T0定时正常。可能原因是当在处理T2的定时中断程序时,来了T0中断,需处理完T2的中断程序后才能去处理T0的中断程序,所以导致T0的定时中断出现延迟。T0和T2的中断程序代码已无法缩减了,T0的时序要求很严格,有没有什么办法能够在同时开启T0和T2后确保T0的定时中断时间为32us?ATMEGA88PA几个定时器能否设置中断优先级呢?求救各位大虾!

相关帖子

沙发
xdy1927| | 2012-10-10 23:09 | 只看该作者
T2的优先级优先T0,所以你T0会受到影响,你可以反过来,32US用T2来定。这样就可以保障32US的不受影响。看你的用法是定32US和64US,如果可以的话,你可以用一个定时器来做,软件做一个2分频就可以满足64US了哦。呵呵

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
okyouwin + 1
板凳
NE5532| | 2012-10-11 08:14 | 只看该作者
是哈,刚好是倍数的话,直接32uS就解决问题了。

使用特权

评论回复
地板
liuyanlbg|  楼主 | 2012-10-11 19:38 | 只看该作者
二楼,T2和T0反过来也是一样的哦,没有优先级。因为中断程序代码比较多,两个中断代码加起来会超过32us,所以不能放在一个中断里面。

使用特权

评论回复
5
liuyanlbg|  楼主 | 2012-10-11 19:38 | 只看该作者
二楼,T2和T0反过来也是一样的哦,没有优先级。因为中断程序代码比较多,两个中断代码加起来会超过32us,所以不能放在一个中断里面。

使用特权

评论回复
6
liuyanlbg|  楼主 | 2012-10-11 19:40 | 只看该作者
T2和T0反过来也是一样的哦,没有优先级。因为中断程序代码比较多,两个中断代码加起来会超过32us,所以不能放在一个中断里面。

使用特权

评论回复
7
dqyubsh| | 2012-10-13 00:19 | 只看该作者
一个中断塞不下,用两个也不能保证塞得下。这样弄单片机基本累死了,应该重新评估设计方案,至少要改进一下算法。

单片机不是神器,它应该大多数时间都是空闲的,而不是一直忙的要死。

使用特权

评论回复
8
hyhmh| | 2012-10-15 14:27 | 只看该作者
这是 LZ 编程方法 错误——“中断程序代码比较多”
详细分析, 中断程序 执行时间 必须尽量短。

使用特权

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

本版积分规则

37

主题

59

帖子

0

粉丝