找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3472|回复: 6
打印 上一主题 下一主题
收起左侧

单片机如何模拟16路PWM

[复制链接]
跳转到指定楼层
楼主
最近整了个灯的样品在玩,通过逻辑分析仪抓到的16路PWM波形,16路周期都为5ms,其中有6路PWM是持续输出,剩下的10路间断输出,每一路的占空比都在3个周期后改变。观察到的占空比无任何规律,求解应如何做才比较好。。用的单片机有2个TCC中断


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2017-7-20 23:05 | 只看该作者
用一个时间中断即可,如T0:
回复

使用道具 举报

板凳
ID:74758 发表于 2017-7-20 23:20 | 只看该作者
对了,PWM波形一共有100格,每格50us
回复

使用道具 举报

地板
ID:123289 发表于 2017-7-20 23:30 | 只看该作者
做16对(16个计时器R_x、16个起动标记位B_x,16个计时常量寄存器C_x,x=1-16)+1个计时器,16对是为16路置1服务的,1个是周期计时器。
当T0中断时,做如下工作:
周期计时器:计满后(例如50ms),将16路输出清0,并复位16个计时器R_x=0,并起动这16个计时器B_X=1,同时将自已复位再计。
16路置1计时器:当B_X=1时,R_x+1计数;当B_X=0时,R_x不计数;当R_x=C_x时,将第X路输出置1,并清B_X=0。
如此只要在主程序中,将16个C_x付值(例0-50ms),16路PWM就OK了。
回复

使用道具 举报

5#
ID:74758 发表于 2017-7-20 23:31 | 只看该作者
yzwzfyz 发表于 2017-7-20 23:05
用一个时间中断即可,如T0:

能具体点吗?现在是用的定时器中断来达到PWM的效果,但模拟出来的PWM周期不对,而且因为占空比比较多将各通道占空比弄成数组的形式来去填充,结果单片机的速度貌似不够,出来的效果不对
回复

使用道具 举报

6#
ID:27916 发表于 2017-7-21 08:37 | 只看该作者
用定时器
1路PWM和16路一个意思
回复

使用道具 举报

7#
ID:74758 发表于 2017-7-22 11:10 | 只看该作者
青苹果 发表于 2017-7-21 08:37
用定时器
1路PWM和16路一个意思

但占空比是一直变化的,除去6路外其他的都是间断工作的,出来的效果感觉就像是处理不及时,很差
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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