标题: 如何做单片机多路高效率1kHZ的pwm 困扰了我很久了 [打印本页]

作者: jizi    时间: 2018-3-26 15:23
标题: 如何做单片机多路高效率1kHZ的pwm 困扰了我很久了
怎么样在stc12c上做多路(最好是3路以上)1kHZ的pwm用定时器定时
有什么思路更有效率解决
这个问题困扰了我很久

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

作者: QWER01234    时间: 2018-3-27 10:19
用定时器可以实现在任意io上输出pwm,可以很多路,一般控制多个舵机我都是这么做得。
作者: zjkgb967    时间: 2018-3-27 13:10
用一个定时器产生基本时钟,PWM周期和占空比做成多路不同的表格数据,然后从定时器中断中取数控制多路PWM输出即可
作者: 指北针    时间: 2020-3-13 12:00
QWER01234 发表于 2018-3-27 10:19
用定时器可以实现在任意io上输出pwm,可以很多路,一般控制多个舵机我都是这么做得。

我最近也在想这问题,你说的方式理论没问题,但是路数多了会不会闪烁呢
作者: lovexulu    时间: 2020-3-13 13:14
这个问题也不难解决,如果只是单纯的PWM输出,没有其他延迟高的处理任务,则直接由中断产生时间片中断,以1000hz周期为切时间片N份,设置每路输出的反转点变量,比较变量与N反转输出即可。
如果有其他高延迟任务但可重入函数类型的,可采用RTX-51(keil自带51操作系统)以RTX系统延迟为基准计数变量N,周期为1000kz,在每个任务(一路pwm)中比较设定值与变量N大小决定输出翻转即可得到多路pwm。




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1