This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

MD10C DC Motor with TM4C129

I have the MD10C DC Motor that I am trying to drive by TM4C129. Below Code

The motor has two direction, A and B. Using below code, the motor only moves in 'A' direction. No matter whether I toggle the GPIO_PIN_4 or not, in 

GPIOPinWrite(GPIO_PORTK_BASE, GPIO_PIN_4, ~GPIO_PIN_4);

it only moves in 'A' direction. In fact, if I comment out the GPIOPinWrite call, even then it moves to 'A' direction and never towards 'B'. What am I missing? Is the pin setup sequence right?

#define RAMP 0.35

Motor::Motor() {
period = 65000; //20ms (16Mhz / 64pwm_divider / 50)
duty = period; //default is off (PWM counts down)
oldval = 0;
motorDIR =-1;

SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOK);
SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); 
//Configure PWM Clock divide system clock by 64 SysCtlPWMClockSet(SYSCTL_PWMDIV_64);
//Configure PK5 as PWM signal to motor driver GPIOPinConfigure(GPIO_PK5_M0PWM7); GPIOPinTypePWM(GPIO_PORTK_BASE, GPIO_PIN_5);
// Set PK4 as output, SW controlled. for direction GPIOPinTypeGPIOOutput(GPIO_PORTK_BASE, GPIO_PIN_4); GPIOPinWrite(GPIO_PORTK_BASE, GPIO_PIN_4, 0);
// configure PWM PWMGenConfigure(PWM0_BASE, PWM_GEN_3, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC);
//Set the Period (expressed in clock ticks) PWMGenPeriodSet(PWM0_BASE, PWM_GEN_3, period); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_7, duty); PWMGenEnable(PWM0_BASE, PWM_GEN_3); PWMOutputInvert(PWM0_BASE, PWM_OUT_7_BIT, 1);
// Turn on the Output pins PWMOutputState(PWM0_BASE, PWM_OUT_7_BIT, true); // } void Motor::update(double value) { oldval=value; GPIOPinWrite(GPIO_PORTK_BASE, GPIO_PIN_4, ~GPIO_PIN_4); duty = (uint32_t) (period - (fabs(oldval) * period)); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_7, duty);
}