MSP430新手想请教各位一个问题,本人用的MSP430F2132。
现在想用Timer0输出一个频率215000hz的PWM脉冲波,占空比0.5,但要求定时器中断频率为21500,不知道能不能实现。
Peter_Zheng:
没太明白您的意思。如果是要输出215KHZ的PWM是可以做不用定时器中断的。另外,您需要的21.5KHZ的中断频率是用于什么方面?
Hardy Hu:
可以使用Timer0输出一个频率215000hz的PWM脉冲波,占空比0.5,这里有一个例程,希望对你有帮助:
//******************************************************************************
// MSP430F21x2 Demo – Timer_A, PWM TA1-2, Up/Down Mode, HF XTAL ACLK
//
// Description: This program generates two PWM outputs on P1.2/1.3 using
// Timer0_A3 configured for up/down mode. The value in TA0CCR0, 128, defines the
// PWM period/2 and the values in TA0CCR1 and TA0CCR2 the PWM duty cycles.
// Using HF XTAL ACLK as TACLK, the timer period is HF XTAL/256 with a 75%
// duty cycle on P1.2 and 25% on P1.3.
// ACLK = MCLK = TA0CLK = HF XTAL
// //* HF XTAL REQUIRED AND NOT INSTALLED ON FET *//
// //* Min Vcc required varies with MCLK frequency – refer to datasheet *//
//
// MSP430F21x2
// —————–
// /|\| XIN|-
// | | | HF XTAL (3 – 16MHz crystal or resonator)
// –|RST XOUT|-
// | |
// | P1.2/TA0_1|–> TA0CCR1 – 75% PWM
// | P1.3/TA0_2|–> TA0CCR2 – 25% PWM
//
// A. Dannenberg
// Texas Instruments Inc.
// April 2006
// Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.41A
//******************************************************************************
#include "msp430x21x2.h"
void main(void)
{
volatile unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 |= XTS; // ACLK= LFXT1= HF XTAL
BCSCTL3 |= LFXT1S1; // LFXT1S1 = 3-16MHz
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i–); // Time for flag to set
}
while (IFG1 & OFIFG); // OSCFault flag still set?
BCSCTL2 |= SELM_3; // MCLK= LFXT1 (safe)
P1DIR |= 0x0C; // P1.2 and P1.3 output
P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 otions
TA0CCR0 = 128; // PWM Period/2
TA0CCTL1 = OUTMOD_6; // TA0CCR1 toggle/set
TA0CCR1 = 32; // TA0CCR1 PWM duty cycle
TA0CCTL2 = OUTMOD_6; // TA0CCR2 toggle/set
TA0CCR2 = 96; // TA0CCR2 PWM duty cycle
TA0CTL = TASSEL_1 + MC_3; // ACLK, up-down mode
__bis_SR_register(LPM0_bits); // Enter LPM0
}
Hardy Hu:
1.PWM是硬件实现的,不需要进Timer中断
2.你是需要在中断中修改PWM占空比吗?
HaiTao Li:
回复 Hardy Hu:
确实想看看可调的实现方法。
Leon Yan:
回复 HaiTao Li:
是同一个Timer既用来做PWM,又来产生timer中断吗?
如果是这样用,没有问题,可以实现。
或者是做BLDC的项目?也可以实现。