Part Number: MSP430FR2633
Hi Team,
I use Timer1_A3 to generate PWM signal on P1.0.
Because P1.0 is not PWM output pin, I turn on/off LED in interrupt service routine.
The system hang on PWM timer start.
Does it conflict with CAPT timer?
void InitPWMTimer(void)
{
TA1CTL |= (TACLR);
TA1CTL |= (TASSEL__SMCLK); // SMCLK=2M
TA1CCR0 = 52; // 38KHz PWM period (2000000 / 38000) = 53
TA1CCTL0 |= CCIE;
TA1CCTL0 &= ~CCIFG;
TA1CCR1 = 17; // 33% duty (2000000 / 38000 / 3) = 18
TA1CCTL1 |= CCIE;
TA1CCTL1 &= ~CCIFG;
}
void KeypadTouchCallback(tSensor *pSensor)
{
if ((pSensor->bSensorTouch == true) && (pSensor->bSensorPrevTouch == false))
{
if (keypadSensor_E00.bTouch == true)
{
TA1CTL |= MC__UP;
}
}
else if ((pSensor->bSensorTouch == false)
&& (pSensor->bSensorPrevTouch == true))
{
TA1CTL &= ~MC__UP;
}
}
void main(void)
{
WDTCTL = WDTPW | WDTHOLD;
BSP_configureMCU();
InitPWMTimer();
__bis_SR_register(GIE);
CAPT_appStart();
CAPT_registerCallback(&keypadSensor, &KeypadTouchCallback);
while (1)
{
if (CAPT_appHandler() == true)
{
}
CAPT_appSleep();
}
}
#pragma vector = TIMER1_A0_VECTOR
__interrupt void ISR_PWMPeriod(void)
{
P1OUT |= BIT7;
TA0CCTL0 &= ~CCIFG;
}
#pragma vector = TIMER1_A1_VECTOR
__interrupt void ISR_PWMDuty(void)
{
P1OUT &= ~BIT7;
TA0CCTL1 &= ~CCIFG;
}