Part Number: MSP430I2021
May have designed myself in a corner. CCR0/1/2 are all available as outputs TA0.0/1/2 on pins P1.4/5/6, so i may have incorrectly assumed that meant you could use them (CCR0 specifically). My hope is to get 3 pwm signals from one timer, all with the same frequency/period, but with unique duty cycles. From reading the datasheet, it looks like I should be able to accomplish this with continuous mode at 250Hz (rollover at 0xFFFF), but i'm not seeming to have any luck.. I've read posts about clever use of ISR to accomplish multiple frequencies, but that's not what i'm trying to do. Should I be able to do this?
//Start Timer
Timer_A_clearTimerInterrupt(TIMER_A0_BASE);
Timer_A_initContinuousModeParam initContinuousParam = {0};
initContinuousParam.clockSource = TIMER_A_CLOCKSOURCE_SMCLK;
initContinuousParam.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_1;
initContinuousParam.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_DISABLE;
initContinuousParam.timerClear = TIMER_A_DO_CLEAR;
initContinuousParam.startTimer = false;
Timer_A_initContinuousMode(TIMER_A0_BASE, &initContinuousParam);
Timer_A_startCounter(TIMER_A0_BASE,
TIMER_A_CONTINUOUS_MODE
);
//Initialize compare registers to generate PWM1
Timer_A_initCompareModeParam initComp0Param = {0};
initComp0Param.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_0;
initComp0Param.compareInterruptEnable =
TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE;
initComp0Param.compareOutputMode = TIMER_A_OUTPUTMODE_SET_RESET;
initComp0Param.compareValue = DUTY0;
Timer_A_initCompareMode(TIMER_A0_BASE, &initComp0Param);
//Initialize compare registers to generate PWM2
Timer_A_initCompareModeParam initComp1Param = {0};
initComp1Param.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_1;
initComp1Param.compareInterruptEnable =
TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE;
initComp1Param.compareOutputMode = TIMER_A_OUTPUTMODE_SET_RESET;
initComp1Param.compareValue = DUTY1;
Timer_A_initCompareMode(TIMER_A0_BASE, &initComp1Param);
//Initialize compare registers to generate PWM3
Timer_A_initCompareModeParam initComp2Param = {0};
initComp2Param.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_2;
initComp2Param.compareInterruptEnable =
TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE;
initComp2Param.compareOutputMode = TIMER_A_OUTPUTMODE_SET_RESET;
initComp2Param.compareValue = DUTY2;
Timer_A_initCompareMode(TIMER_A0_BASE, &initComp2Param);
Thanks,
Scott