找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3297|回复: 5
收起左侧

如何做单片机多路高效率1kHZ的pwm 困扰了我很久了

[复制链接]
ID:272269 发表于 2018-3-26 15:23 | 显示全部楼层 |阅读模式
怎么样在stc12c上做多路(最好是3路以上)1kHZ的pwm用定时器定时
有什么思路更有效率解决
这个问题困扰了我很久
回复

使用道具 举报

ID:155507 发表于 2018-3-26 21:50 | 显示全部楼层
怎么可能搞不了三路独立的呢?不要被STC12C5A60S2的硬件蒙蔽了视线,认为,STC12C只有两路PWM,无法实现3路,你却忘记了最原始的办法,不要说STC12有PWM功能,即使是传统的AT89S52这类没有PWM功能的单片机也一样能够实现楼主的要求. 就是软件实现PWM功能
回复

使用道具 举报

ID:212149 发表于 2018-3-27 10:19 | 显示全部楼层
用定时器可以实现在任意io上输出pwm,可以很多路,一般控制多个舵机我都是这么做得。
回复

使用道具 举报

ID:297722 发表于 2018-3-27 13:10 | 显示全部楼层
用一个定时器产生基本时钟,PWM周期和占空比做成多路不同的表格数据,然后从定时器中断中取数控制多路PWM输出即可
回复

使用道具 举报

ID:373976 发表于 2020-3-13 12:00 | 显示全部楼层
QWER01234 发表于 2018-3-27 10:19
用定时器可以实现在任意io上输出pwm,可以很多路,一般控制多个舵机我都是这么做得。

我最近也在想这问题,你说的方式理论没问题,但是路数多了会不会闪烁呢
回复

使用道具 举报

ID:687694 发表于 2020-3-13 13:14 | 显示全部楼层
这个问题也不难解决,如果只是单纯的PWM输出,没有其他延迟高的处理任务,则直接由中断产生时间片中断,以1000hz周期为切时间片N份,设置每路输出的反转点变量,比较变量与N反转输出即可。
如果有其他高延迟任务但可重入函数类型的,可采用RTX-51(keil自带51操作系统)以RTX系统延迟为基准计数变量N,周期为1000kz,在每个任务(一路pwm)中比较设定值与变量N大小决定输出翻转即可得到多路pwm。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表