共2条
1/1 1 跳转至页
问
我需要输出6路不同相位的PWM输出,相位差为60度,不知道如何设定相位差,请各位大虾帮忙。
我用的是MSP430F449。 答 1: //*******************************************************************************
// MSP-FET430P140 Demo - Timer_B, PWM TB1-6, Up Mode, 32kHz ACLK
//
// Description; This program outptus six PWM signals on P2.2,3 and P3.4-7
// using Timer_B configured for up mode. The value in CCR0 defines the PWM
// period and the values in CCR1-6 the PWM duty cycles. Using 32kHz ACLK
// as TBCLK, the timer period is 15.6ms. Normal operating mode is LPM3.
// ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz
// //* An external watch crystal between XIN & XOUT is required for ACLK *//
//
// MSP430F449
// -----------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P2.2/TB1|--> CCR1 - 75% PWM
// | P2.3/TB2|--> CCR2 - 25% PWM
// | P3.4/TB3|--> CCR3 - 12.5% PWM
// | P3.5/TB4|--> CCR4 - 6.25% PWM
// | P3.6/TB5|--> CCR5 - 3.125% PWM
// | P3.7/TB6|--> CCR6 - 1.5625% PWM
//
// M. Buccini
// Texas Instruments Inc.
// Feb 2005
// Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************
#include <MSP430x44x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP18PF; // Configure load caps
P2DIR |= 0x0c; // P2.2 - P2.3 output
P2SEL |= 0x0c; // P2.3 - P2.3 TBx options
P3DIR |= 0xF0; // P3.4 - P3.7 output
P3SEL |= 0xF0; // P3.4 - P3.7 TBx options
TBCCR0 = 512-1; // PWM Period
TBCCTL1 = OUTMOD_7; // CCR1 reset/set
TBCCR1 = 384; // CCR1 PWM duty cycle
TBCCTL2 = OUTMOD_7;
TBCCR2 = 128;
TBCCTL3 = OUTMOD_7;
TBCCR3 = 64;
TBCCTL4 = OUTMOD_7;
TBCCR4 = 32;
TBCCTL5 = OUTMOD_7;
TBCCR5 = 16;
TBCCTL6 = OUTMOD_7;
TBCCR6 = 8;
TBCTL = TBSSEL_1 + MC_1; // ACLK, up mode
_BIS_SR(LPM3_bits); // Enter LPM3
}
周期一样,脉宽不同 答 2: 谢谢版主 答 3: 可相位差怎么设置阿? 答 4: 如果你输出的波形是有规律的,即周期性的,使用一个定时器做载波频率,定期中断,如20KHZ,再在中断函数里查表,根据不同读相位选取常数在表格中的位置,对CCR的常数重加载,达到改变相位的目的.当然如果采用不同的表格(6路输出,6套表格).可以比采用同一个表格节省时间.我以前使用三菱的单片机采用的是1024点的正弦表,MCU是16MHZ振荡频率,出来的三相PWM波很漂亮.不知道MSP430如何,能否吃得消在20KHZ的中断里做一定的判断跳转
我用的是MSP430F449。 答 1: //*******************************************************************************
// MSP-FET430P140 Demo - Timer_B, PWM TB1-6, Up Mode, 32kHz ACLK
//
// Description; This program outptus six PWM signals on P2.2,3 and P3.4-7
// using Timer_B configured for up mode. The value in CCR0 defines the PWM
// period and the values in CCR1-6 the PWM duty cycles. Using 32kHz ACLK
// as TBCLK, the timer period is 15.6ms. Normal operating mode is LPM3.
// ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz
// //* An external watch crystal between XIN & XOUT is required for ACLK *//
//
// MSP430F449
// -----------------
// /|\| XIN|-
// | | | 32kHz
// --|RST XOUT|-
// | |
// | P2.2/TB1|--> CCR1 - 75% PWM
// | P2.3/TB2|--> CCR2 - 25% PWM
// | P3.4/TB3|--> CCR3 - 12.5% PWM
// | P3.5/TB4|--> CCR4 - 6.25% PWM
// | P3.6/TB5|--> CCR5 - 3.125% PWM
// | P3.7/TB6|--> CCR6 - 1.5625% PWM
//
// M. Buccini
// Texas Instruments Inc.
// Feb 2005
// Built with IAR Embedded Workbench Version: 3.21A
//******************************************************************************
#include <MSP430x44x.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
FLL_CTL0 |= XCAP18PF; // Configure load caps
P2DIR |= 0x0c; // P2.2 - P2.3 output
P2SEL |= 0x0c; // P2.3 - P2.3 TBx options
P3DIR |= 0xF0; // P3.4 - P3.7 output
P3SEL |= 0xF0; // P3.4 - P3.7 TBx options
TBCCR0 = 512-1; // PWM Period
TBCCTL1 = OUTMOD_7; // CCR1 reset/set
TBCCR1 = 384; // CCR1 PWM duty cycle
TBCCTL2 = OUTMOD_7;
TBCCR2 = 128;
TBCCTL3 = OUTMOD_7;
TBCCR3 = 64;
TBCCTL4 = OUTMOD_7;
TBCCR4 = 32;
TBCCTL5 = OUTMOD_7;
TBCCR5 = 16;
TBCCTL6 = OUTMOD_7;
TBCCR6 = 8;
TBCTL = TBSSEL_1 + MC_1; // ACLK, up mode
_BIS_SR(LPM3_bits); // Enter LPM3
}
周期一样,脉宽不同 答 2: 谢谢版主 答 3: 可相位差怎么设置阿? 答 4: 如果你输出的波形是有规律的,即周期性的,使用一个定时器做载波频率,定期中断,如20KHZ,再在中断函数里查表,根据不同读相位选取常数在表格中的位置,对CCR的常数重加载,达到改变相位的目的.当然如果采用不同的表格(6路输出,6套表格).可以比采用同一个表格节省时间.我以前使用三菱的单片机采用的是1024点的正弦表,MCU是16MHZ振荡频率,出来的三相PWM波很漂亮.不知道MSP430如何,能否吃得消在20KHZ的中断里做一定的判断跳转
共2条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
与电子爱好者谈读图四被打赏50分 | |
与电子爱好者谈读图二被打赏50分 | |
【FRDM-MCXN947评测】Core1适配运行FreeRtos被打赏50分 | |
【FRDM-MCXN947评测】双核调试被打赏50分 | |
【CPKCORRA8D1B评测】---移植CoreMark被打赏50分 | |
【CPKCORRA8D1B评测】---打开硬件定时器被打赏50分 | |
【FRDM-MCXA156评测】4、CAN loopback模式测试被打赏50分 | |
【CPKcorRA8D1评测】--搭建初始环境被打赏50分 | |
【FRDM-MCXA156评测】3、使用FlexIO模拟UART被打赏50分 | |
【FRDM-MCXA156评测】2、rt-thread MCXA156 BSP制作被打赏50分 |