标题: 单片机如何模拟16路PWM [打印本页]

作者: saiyqx    时间: 2017-7-20 21:59
标题: 单片机如何模拟16路PWM
最近整了个灯的样品在玩,通过逻辑分析仪抓到的16路PWM波形,16路周期都为5ms,其中有6路PWM是持续输出,剩下的10路间断输出,每一路的占空比都在3个周期后改变。观察到的占空比无任何规律,求解应如何做才比较好。。用的单片机有2个TCC中断



作者: yzwzfyz    时间: 2017-7-20 23:05
用一个时间中断即可,如T0:
作者: saiyqx    时间: 2017-7-20 23:20
对了,PWM波形一共有100格,每格50us
作者: yzwzfyz    时间: 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了。
作者: saiyqx    时间: 2017-7-20 23:31
yzwzfyz 发表于 2017-7-20 23:05
用一个时间中断即可,如T0:

能具体点吗?现在是用的定时器中断来达到PWM的效果,但模拟出来的PWM周期不对,而且因为占空比比较多将各通道占空比弄成数组的形式来去填充,结果单片机的速度貌似不够,出来的效果不对
作者: 青苹果    时间: 2017-7-21 08:37
用定时器
1路PWM和16路一个意思
作者: saiyqx    时间: 2017-7-22 11:10
青苹果 发表于 2017-7-21 08:37
用定时器
1路PWM和16路一个意思

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




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