MSP430G2332能否设置两路独立的PWM输出?如果可以,怎样设置?谢谢
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
你好!
G2332 只有一个timer0,内部有3个 cc 比较捕获模块,只能产生同一频率的 pwm wave
可以把WDT timer 配置成 定时器,触发中断,作为时钟源。ISR里面进行计数和比较,并且通过GPIO输出,得到另一路PWM wave。
答便车问个问题,如果这两路PWM要求90度相位差,怎么实现?
鸵鸟蝈蝈 帮回答一下人家这个问题吧,我都看不过去了。我现在忙呀,脑袋本来不灵光,三头六臂也弄不了那么多事情呀,够烦的杂七八拉的
严格的说,使用G2332的TimerA3模块,可以最多实现3路不同占空比的PWM,CCR0,CCR1,CCR2各决定一个路占空比,只是这样的做法,PWM的周期,就是TimerA计数65536个cout的时间,只能通过调节晶振来改变PWM频率,很不灵活。
故在实际使用中,一般让TimerA3工作在up模式,CCR0的值决定PWM的频率,而CCR1和CCR2来决定两路PWM的duty cycle,这就是Evan所说的,两路不同占空比,但是频率相同的PWM。
楼主可以参考G2xx2参考代码中的,ta_16.c,那段代码实现了一路用CCR1产生的PWM,你只需再加上CCR2的设置,就可以很方便的改成两路PWM输出。
而用WDT Timer,或者用GPIO模拟,来产生PWM。由于IO口的翻转需要通过代码来实现(在主程序或者中断处理函数),不可避免就会由于代码的运行时间而产生延时,是无法产生高精度的PWM。当然,对误差余量较大的设计另当别论。