我的想法是想产生不对称的三角波(三角波两边斜率不一样),于是想到将ePWM的时钟分频位CLKDIV和HSPCLKDIV的设置放在中断中,每进一次主中断就改变一次分频系数,不知道我的这种想法可行否?
下面代码是放在主中断中的,但是改变其值的大小,好像对三角波没有影响,寄存器TBCTL的值并没有改变。
(*ePWM[1]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
(*ePWM[2]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
(*ePWM[3]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
(*ePWM[1]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
(*ePWM[2]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
(*ePWM[3]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
1.想问不对称三角波应该怎么实现?
2.上述操作存在什么问题?
不胜感谢!!!
Seven Han:I am not sure if this is possible,so i post your question on e2e,please refer to this following link:
e2e.ti.com/…/692255
我的想法是想产生不对称的三角波(三角波两边斜率不一样),于是想到将ePWM的时钟分频位CLKDIV和HSPCLKDIV的设置放在中断中,每进一次主中断就改变一次分频系数,不知道我的这种想法可行否?
下面代码是放在主中断中的,但是改变其值的大小,好像对三角波没有影响,寄存器TBCTL的值并没有改变。
(*ePWM[1]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
(*ePWM[2]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
(*ePWM[3]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
(*ePWM[1]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
(*ePWM[2]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
(*ePWM[3]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
1.想问不对称三角波应该怎么实现?
2.上述操作存在什么问题?
不胜感谢!!!
mangui zhang:我想了一下你这个肯定需要一个不对称三角波的表这个表根据比较寄存器位宽给然后周期去赋值给比较寄存器
然后输出的PWM波占空比就是一个等效电压然后通过外部的滤波还原出三角波
我的想法是想产生不对称的三角波(三角波两边斜率不一样),于是想到将ePWM的时钟分频位CLKDIV和HSPCLKDIV的设置放在中断中,每进一次主中断就改变一次分频系数,不知道我的这种想法可行否?
下面代码是放在主中断中的,但是改变其值的大小,好像对三角波没有影响,寄存器TBCTL的值并没有改变。
(*ePWM[1]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
(*ePWM[2]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
(*ePWM[3]).TBCTL.bit.HSPCLKDIV = HSPCLKDIV_PRESCALE_X_10;
(*ePWM[1]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
(*ePWM[2]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
(*ePWM[3]).TBCTL.bit.CLKDIV = CLKDIV_PRESCALE_X_128;
1.想问不对称三角波应该怎么实现?
2.上述操作存在什么问题?
不胜感谢!!!
bob iuuiy:
回复 mangui zhang:
那不能直接在中断中改变时钟频率来实现吗?比如说在CTR=0的时候进中断然后改变HSPCLKDIV的值,然后改变触发中断的条件,让CTR=PRD的时候进中断,再改变HSPCLKDIV的值,再改变触发中断条件,让CTR=0的时候进中断,这样可以实现吗?