打印

单片机main内延时后,如何准确保证定时器定时稳定(延时超...

[复制链接]
1059|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xu6158|  楼主 | 2018-7-4 12:50 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 xu6158 于 2018-7-4 13:55 编辑

最近小弟遇到一个案子,是这样的:        
     需要用定时器定个10Ms的时间用来做按键检测和LED闪烁的定时时间,  并且需要在主程序里IO口模拟PWM,
     关掉定时器后小延时,大概10Us,100Us,重复200次左右,也就是10-22Ms后,才能重新打开定时器定时        
    有没有同学,遇过这种情况,如何补偿定时器的定时,保证定时准确呢?        
    想了很多方法都不好用,有没有做过这种延时后,定时不准确的问题之类的高手解答,或者我们交流一下

补充一下,这是用义隆的153MCU做的,时钟只有4MHz,用定时器没法做10us的PWM波形,所以才用延时的办法做的,无奈之举,关键在于,用同样的IC,老外做出来了,所以很好奇,一定有什么好的办法可以实现

相关下载

相关帖子

沙发
ayb_ice| | 2018-7-4 13:04 | 只看该作者
为什么要关掉定时器呢,

使用特权

评论回复
评论
xu6158 2018-7-4 13:16 回复TA
因为不能在PWM其间进入定时,其高电平只有10us,进入定时至少要延时8-10us,这个PWM是用来升压的,从3v升到110v做电击功能,所以只能关掉定时器,结束后再开 
板凳
xu6158|  楼主 | 2018-7-4 13:16 | 只看该作者
ayb_ice 发表于 2018-7-4 13:04
为什么要关掉定时器呢,

因为不能在PWM其间进入定时,其高电平只有10us,进入定时至少要延时8-10us,这个PWM是用来升压的,从3v升到110v做电击功能,所以只能关掉定时器,结束后再开

使用特权

评论回复
地板
ayb_ice| | 2018-7-4 13:41 | 只看该作者
xu6158 发表于 2018-7-4 13:16
因为不能在PWM其间进入定时,其高电平只有10us,进入定时至少要延时8-10us,这个PWM是用来升压的,从3v升到11 ...

主程序难道不执行其它代码吗,一旦执行PWM不一样也不准了吗

使用特权

评论回复
5
ayb_ice| | 2018-7-4 13:43 | 只看该作者
再说了,执行PWM时禁止中断不就可以了,没有必要关定时器

使用特权

评论回复
评论
ayb_ice 2018-7-4 14:08 回复TA
@xu6158 :服你了,在运行就可以减少误差,如果定时10MS,关中断的时间少于10MS,不就没有误差了吗,最多只有抖动而已 
xu6158 2018-7-4 13:58 回复TA
对单片机来说是一样的...你想想,pc指针不到定时器,那么8位定时计数器在运行有什么用? 
ayb_ice 2018-7-4 13:53 回复TA
@xu6158 :怎么可能一样,禁止中断,定时器仍在运行,区别大了 
xu6158 2018-7-4 13:52 回复TA
禁止中断或者关定时器,PC指针都不能进入计时子程序,原理上来说是一样的. 
6
ayb_ice| | 2018-7-4 14:26 | 只看该作者
你这情况直接用定时器产生短延时就可以了,然后将各任务灵活插入200US延时就可以解决,定时器不用中断

直接定时200US,可能通过读取定时器当前值,两次这差判断是否到200US,短延时通过指令延时就可以了,扫键,LED控制插入200US中(不需要每个周期都执行)

使用特权

评论回复
7
ayb_ice| | 2018-7-4 14:34 | 只看该作者
再改进下思路:

用定时器产生200US定时中断,定时中断处理PWM信号,PWM短延时直接在中断中用指令延时产生,其它放主循环处理,定时中断再简单处理几个时间标志给主循环用

使用特权

评论回复
8
xu6158|  楼主 | 2018-7-4 14:35 | 只看该作者
ayb_ice 发表于 2018-7-4 14:26
你这情况直接用定时器产生短延时就可以了,然后将各任务灵活插入200US延时就可以解决,定时器不用中断

直 ...

感谢大侠,侠义相助,有种廓然开朗的感觉,我先试试你的方案.以前倒用过这种方法,一时被10us的脉冲给吓住了,感谢感谢

使用特权

评论回复
9
ayb_ice| | 2018-7-4 14:51 | 只看该作者
xu6158 发表于 2018-7-4 14:35
感谢大侠,侠义相助,有种廓然开朗的感觉,我先试试你的方案.以前倒用过这种方法,一时被10us的脉冲给吓住了, ...

用改进的思路更合理,看帖子相关部分

使用特权

评论回复
评论
xu6158 2018-7-4 15:54 回复TA
没事,我就是用后面那个去实现的 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

26

帖子

4

粉丝