Other Parts Discussed in Thread: MSPWARE
i am trying to fade an led using msp430fr4133 using pwm and interrupts but i am not getting anything my PWM is working and led is blinking instead of fading its should dim and glow following is my code i am MSPware driver lib can anyone suggest any improvements in my code.
#include "driverlib.h"
void initTimers(void);
int main(void) {
WDT_A_hold(WDT_A_BASE);
GPIO_setAsOutputPin( GPIO_PORT_P1, GPIO_PIN0 ); // Red LED (LED2)
GPIO_setOutputLowOnPin( GPIO_PORT_P1, GPIO_PIN0 );
///GPIO_setAsOutputPin( GPIO_PORT_P4, GPIO_PIN0 ); // Green LED (LED2)
//GPIO_setOutputLowOnPin( GPIO_PORT_P4, GPIO_PIN0 );
//Setting output pins
GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P8, GPIO_PIN3, GPIO_PRIMARY_MODULE_FUNCTION);
//GPIO_setAsPeripheralModuleFunctionOutputPin(GPIO_PORT_P1, GPIO_PIN7, GPIO_PRIMARY_MODULE_FUNCTION);
PMM_unlockLPM5();
initTimers();
__bis_SR_register( GIE ); // Enable interrupts globally
while(1) {
__no_operation(); // Placeholder for while loop (not required)
}
return (0);
}
void initTimers(void)
{
// Set up the interrupt using CCROIFG to toggle red LED1
// Set up the interrupt using TA1IFG toggle green LED2
Timer_A_initUpModeParam initUpParam = { 0 };
initUpParam.clockSource = TIMER_A_CLOCKSOURCE_ACLK; // Use ACLK (slower clock)
initUpParam.clockSourceDivider = TIMER_A_CLOCKSOURCE_DIVIDER_1; // Input clock = ACLK / 1 = 32KHz
initUpParam.timerPeriod = 0xFFFF/2; // Half the time
initUpParam.timerInterruptEnable_TAIE = TIMER_A_TAIE_INTERRUPT_ENABLE; // Enable TAR -> 0 interrupt
initUpParam.captureCompareInterruptEnable_CCR0_CCIE = TIMER_A_CCIE_CCR0_INTERRUPT_ENABLE; //Enable compare interrupt
initUpParam.timerClear = TIMER_A_DO_CLEAR; // Clear TAR & clock divider
initUpParam.startTimer = true; // Don't start the timer, yet
Timer_A_initUpMode( TIMER_A1_BASE, &initUpParam );
//CCR2 configuration
Timer_A_initCompareModeParam initCcr2Param ={0};
initCcr2Param.compareRegister = TIMER_A_CAPTURECOMPARE_REGISTER_2;
initCcr2Param.compareInterruptEnable = TIMER_A_CAPTURECOMPARE_INTERRUPT_DISABLE;
initCcr2Param.compareOutputMode = TIMER_A_OUTPUTMODE_TOGGLE_RESET;
initCcr2Param.compareValue = 0x0AB0;
Timer_A_initCompareMode( TIMER_A1_BASE, &initCcr2Param );
Timer_A_clearTimerInterrupt( TIMER_A1_BASE );
Timer_A_clearCaptureCompareInterrupt(TIMER_A1_BASE, TIMER_A_CAPTURECOMPARE_REGISTER_0 + TIMER_A_CAPTURECOMPARE_REGISTER_2); //Clear CCROIFG
Timer_A_startCounter(
TIMER_A1_BASE,
TIMER_A_UP_MODE
);
}