定时不准的问题,请教各位大人!!感谢!!

[复制链接]
2338|3
 楼主| liyq 发表于 2007-1-8 21:29 | 显示全部楼层 |阅读模式
 我现在的单片机c程序中,有多个周期定时的任务。现在是这样做的,用timer0做了一个中断,1ms进一次中断,对g_t_timer++,g_t_timer是unsigned int型。 在主程序中,每个周期任务的开始时间timer=g_t_timer; 如果,g_t_timer-timer>任务周期,那么就开始执行周期性的任务。这个在多数情况下没问题,但是如果周期特别长时,如30s的时候,定时就不准了。怀疑是减的时候出了问题,比如溢出等等。请问存在这种可能吗?现在可以确定的是,1ms进中断是没问题的。我用的单片机是PIC18F系列的。另外,多个定时器之前切换会存在问题,或者那位大侠有更好的方法解决这类定时问题?多谢了!!
 楼主| liyq 发表于 2007-1-9 10:52 | 显示全部楼层

顶起来

bluestdzp 发表于 2007-1-9 10:54 | 显示全部楼层

建议用实时时钟做

mikesullen 发表于 2007-1-9 11:03 | 显示全部楼层

可能是累积误差

你的1ms中断,进入需要时间,出来也需要时间,这是误差,如果累积可能就会有更大的误差了。。。
还有你的中断处理上,有没有可能会被其它的中断占用时间导致定时中断不能及时进入。。。
其它的问题,就是你的计数器g_t_timer有没有可能会在其它不预知的地方被修改了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部