单片机定时任务与中断

applegeeE 2012-04-19 05:16:33
一个相对复杂的定时任务函数,放在主循环和放在中断里面执行,哪个更优?
背景,一个主循环的运行时间大概是16ms,而中断也是定时的,5ms进一次中断。
现在的定时函数放在主循环里面,这样的话,它的最小精确度就是以个主循环的时间即16ms,而如果放在中断里面的话就是5ms。。
刚刚也请教了一下身边的朋友,讨论的结果大概是进中断处理复杂的函数,会因为处理哪个函数的时候,数据的保存和读取会花多余的时间。
我现在的理解大概也是这样的。如果要定时任务更精确,就可以放在中断里面,反之,放主函数。
不知道大婶们,有没有别的想法。
...全文
149 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
applegeeE 2012-04-20
  • 打赏
  • 举报
回复
那个任务其实就是一个轮询链表的操作。如果分成小片段,貌似依然不能放入中断里面。[Quote=引用 3 楼 的回复:]
按你目前的代码现状肯定是放主循环。中断中断的代码都是很小的。否则会减少中断效率。比如你那段代码放在5ms中断中,它要话50us的话。500/5000=10%。另外实时性不高的话就放在16ms的时间片中也不要紧啊!

另外,你这么复杂的任务能不能再分成小的时间片?如,一个大任务拆分成三个阶段的小任务。
[/Quote]
applegeeE 2012-04-20
  • 打赏
  • 举报
回复
是的,虽然目前的精度没有任何问题,但是我还是想把它的精度提高。[Quote=引用 4 楼 的回复:]
看情况,如果你的中断中需要执行马上反应的任务,放在main 中的反应速度不够。。。。
[/Quote]
applegeeE 2012-04-20
  • 打赏
  • 举报
回复
您好,谢谢你的解答。
你这里说把定时任务分成小片段的思想,我有点不太能理解,可否详细阐述一下、[Quote=引用 3 楼 的回复:]
按你目前的代码现状肯定是放主循环。中断中断的代码都是很小的。否则会减少中断效率。比如你那段代码放在5ms中断中,它要话50us的话。500/5000=10%。另外实时性不高的话就放在16ms的时间片中也不要紧啊!

另外,你这么复杂的任务能不能再分成小的时间片?如,一个大任务拆分成三个阶段的小任务。
[/Quote]
AnYidan 2012-04-20
  • 打赏
  • 举报
回复
看情况,如果你的中断中需要执行马上反应的任务,放在main 中的反应速度不够。。。。
clleady 2012-04-19
  • 打赏
  • 举报
回复
按你目前的代码现状肯定是放主循环。中断中断的代码都是很小的。否则会减少中断效率。比如你那段代码放在5ms中断中,它要话50us的话。500/5000=10%。另外实时性不高的话就放在16ms的时间片中也不要紧啊!

另外,你这么复杂的任务能不能再分成小的时间片?如,一个大任务拆分成三个阶段的小任务。
applegeeE 2012-04-19
  • 打赏
  • 举报
回复
我也有这个印象啊,但是就是不太清楚为什么“最好不要”、、、[Quote=引用 1 楼 的回复:]
我还记得老师告诉,复杂的功能或者带循环的代码最好不要放在中断函数里面,为了保证中断函数
执行的效率....就记得这些了。。。
[/Quote]
querdaizhi 2012-04-19
  • 打赏
  • 举报
回复
我还记得老师告诉,复杂的功能或者带循环的代码最好不要放在中断函数里面,为了保证中断函数
执行的效率....就记得这些了。。。
本期分享用外部中断识别按键,以及长按、短按的识别方法。 一、外部中断识别按键         单片机的P32和P33口是外部中断输入端口,单片机通过检测IO口的电平变化可以触发中断。 将独立按键的一端连接到外部中断输入端口,另一端接地。当按键按下时,IO口会检测到低电平,从而触发中断,在程序中就可以在外部中断服务函数中处理按键。        优点:按键触发更加灵敏,不占用主循环资源,不影响主函数任务(前提是中断中不要用延时或长时任务)。 下图为查询法扫描按键的效果:数码管为动态扫描方式,按键按下时,执行按键功能点亮/熄灭LED,但是此时数码管熄灭,因为查询法执行完按键功能之后进入死循环等待。 下图是利用外部中断识别按键,可以看到按键按下对数码管的动态扫描无影响。 二、定时器实现长按、短按 用定时器扫描按键的原理与有些相似,都是利用中断,不同的是定时器可以定时,那么就可以实现更多功能:长按、短按。使用单片机的定时器功能,每个一定时间扫描一次按键,如果按键按下,记录按键时间,然后判断按键时间,根据时间执行不同的按键功能,从而实现长按短按。关键代码如下: 在定时器1的中

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧