Other Parts Discussed in Thread: MSP430FG4618, MSP430F5438
Hello Sir,
I am using MSP430FG4618 experimental board for one application, which is using Timer and Comparator. I have turned on Timer in Comparator ISR, but the duty cycle of the GPIO output is not stable. I am using 4MHz DCO clock. Should i have to modify code?
A part of code is mentioned here:
#include <msp430.h>
int main(void)
{
unsigned char i;
WDTCTL = WDTPW+WDTHOLD; // Stop WDT
FLL_CTL0 |= (DCOPLUS + XCAP18PF);
SCFI0 |= FLLD_2 + FN_4;
SCFQCTL = 61;
do
{
IFG1 &= ~OFIFG;
for (i = 0x47FF; i > 0; i--);
} while ((IFG1 & OFIFG));
P3SEL |= 0x0F0; // P3 option select
P3DIR |= 0x0F0; // P3 outputs
P5DIR |= BIT1;
P5OUT |= BIT1;
TBCCR0 = 40000-1;
TBCCTL3 = OUTMOD_7; // CCR3 reset/set
TBCCR3 = 30000; // CCR3 PWM duty cycle
TBCCTL4 = OUTMOD_7; // CCR4 reset/set
TBCCR4 = 20000; // CCR4 PWM duty cycle
TBCCTL5 = OUTMOD_7; // CCR5 reset/set
TBCCR5 = 10000; // CCR5 PWM duty cycle
TBCCTL6 = OUTMOD_7; // CCR6 reset/set
TBCCR6 = 5000; // CCR6 PWM duty cycle
TBCTL |= TBSSEL_2;
CACTL1 = CAON | CAREF_2 | CARSEL; // enable comp, Vref = diode reference voltage
CACTL2 = P2CA0;
CACTL1 |= CAIE;
_EINT();
}
#pragma vector=COMPARATORA_VECTOR
__interrupt void Comp_A_ISR (void)
{
TBCTL |= MC_1;
P5OUT &= ~BIT1;
CACTL1 ^= CAIES;
}
Thanks.