Hi,
I am new to MSP430. I want to have 2 PWM signals. One has 25kHz with 60% duty cycle on P1.1 pin. The other one has 0.016Hz with 75% duty cycle on P2.1 pin.
Here is what I do. It is very clumsy.
#include <msp430.h>
int main(void)
{
WDTCTL = WDTPW + WDTHOLD;
//P2.1 and P2.2
P2DIR |= 0x07; //
//PWM
P1DIR |= 0x04; // Set P1.1 to output direction
P1SEL |= 0x04; // P1.1 TA0.1 options
CCR0 = 38; // PWM Period
CCTL1 = OUTMOD_7; // CCR1 reset/set
CCR1 = 23; // pwm 60%
TACTL = TASSEL_2 + MC_1; // SMCLK, up mode
for (;;)
{
volatile unsigned int i,j;
j = 70;
i = 10000; // Delay
do
{
j--;
do (i--);
while (i != 0);
} while (j != 0);
P2OUT ^= 0x07; // PS12 and LED off
j = 23;
i = 10000; // Delay
do
{
j--;
do (i--);
while (i != 0);
} while (j != 0);
P2OUT ^= 0x07; // PS12 and LED on
}
}
Do we have a better way to realize the function?
25kHz PWM has very bad accuracy because SMCLK is around 1MHz. How can I increase the CLK frequency?
Thanks,
Xiaoming