main内延时后(关定时,且延时大于定时器定时),如何保证准确...

[复制链接]
1116|7
 楼主| xu6158 发表于 2018-7-4 12:47 | 显示全部楼层 |阅读模式
本帖最后由 xu6158 于 2018-7-4 13:54 编辑

最近小弟遇到一个案子,是这样的:
       需要用定时器定个10Ms的时间用来做按键检测和LED闪烁的定时时间,
       并且需要在主程序里IO口模拟PWM,关掉定时器后小延时,大概10Us,100Us,重复200次左右,也就是10-22Ms后,才能重新打开定时器定时
       有没有同学,遇过这种情况,如何补偿定时器的定时,保证定时准确呢?
       想了很多方法都不好用,有没有做过这种延时后,定时不准确的问题之类的高手解答,或者我们交流一下
补充一下,这是用义隆的153MCU做的,时钟只有4MHz,用定时器没法做10us的PWM波形,所以才用延时的办法做的,无奈之举,关键在于,用同样的IC,老外做出来了,所以很好奇,一定有什么好的办法可以实现

原理图如下

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
gx_huang 发表于 2018-7-4 13:01 | 显示全部楼层
如果你的软件总体结构不合理,很难实现的。
你把你需要的任务列出来,然后优化软件结构。
和硬件设计也有很大关系。

评论

@xu6158 :你无非以下任务:1、110V升压,需要PWM。2、按键检测。3、LED闪烁。现在最关键的是PWM驱动,需要实时性比较高,PWM周期100us,脉冲10us,这个很容易,只要开一个定时器,周期100us:1、每进去100次,处理按键和LED驱动。2、每进去一次,如果需要PWM,则输出10us高电平。  发表于 2018-7-4 15:10
已经附上原理图  发表于 2018-7-4 13:59
@xu6158 :不同MCU的资源不一样,软件PWM脉冲可以定时器处理,按键抖动也定时器处理,你还是把原理图贴出来,有哪些输入输出,别人才好讨论  发表于 2018-7-4 13:30
因为单片机只有4M的时钟,10us/100us的PWM脉冲只能用延时来完成,这也是没办法之举,关键是这是能实现的,老外做出来了,我们的产品却没法搞定.所以肯定有什么好的方法的  发表于 2018-7-4 13:07
efen 发表于 2018-7-4 14:08 | 显示全部楼层
不用定时器,用模拟pwm执行的时间轮询按键检测和led
 楼主| xu6158 发表于 2018-7-4 14:27 | 显示全部楼层
efen 发表于 2018-7-4 14:08
不用定时器,用模拟pwm执行的时间轮询按键检测和led

可是这样的话,定时10ms,怎么实现?因为升压过程中需要10ms/180ms周期的高电平脉冲,使其稳定在110V,如果是30ms的话,这个倒容易了,直接按你说的方法即可的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

26

帖子

4

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