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