// init servo signal and pin // does not check arguments, make sure to pass valide arguments void servo_init(void) { xSysCtlPeripheralClockSourceSet(xSYSCTL_PWMB_MAIN, 1); // Enable PWM peripheral xSysCtlPeripheralEnable(SYSCTL_PERIPH_PWMB); // Enable gpio pin peripheral xSysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); // Enable PWM and set GPIO Pin as PWM xSPinTypePWM(TIM1CH0, PB0); // xSPinTypePWM(TIM0CH3, PE30); // Set invert, dead zone and mode xPWMInitConfigure(xPWMB_BASE, xPWM_CHANNEL0, xPWM_TOGGLE_MODE); // Set CNR, Prescale and Divider. FHz = 50Hz xPWMFrequencySet(xPWMB_BASE, xPWM_CHANNEL0, 50); // Set CMR, high pulse @ 1,5 ms middle position servo_angle(0); // Set output enable xPWMOutputEnable(xPWMB_BASE, xPWM_CHANNEL0); // start pwm xPWMStart(xPWMB_BASE, xPWM_CHANNEL0); // initialization ok }
void pwmInit(){ xSysCtlPeripheralClockSourceSet(xSYSCTL_PWMA_HCLK, 1); xSysCtlPeripheralEnable(SYSCTL_PERIPH_PWMA); xSysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); xSPinTypePWM(TIM0CH0, PB11); xSPinTypePWM(TIM0CH1, PB10); xPWMInitConfigure(xPWMA_BASE, xPWM_CHANNEL0, xPWM_TOGGLE_MODE); xPWMInitConfigure(xPWMA_BASE, xPWM_CHANNEL1, xPWM_TOGGLE_MODE); xPWMFrequencySet(xPWMA_BASE, xPWM_CHANNEL0, 50); xPWMDutySetPrec(xPWMA_BASE, xPWM_CHANNEL0, 750); xPWMOutputEnable(xPWMA_BASE, xPWM_CHANNEL0); xPWMStart(xPWMA_BASE, xPWM_CHANNEL1); xPWMFrequencySet(xPWMA_BASE, xPWM_CHANNEL1, 50); xPWMDutySetPrec(xPWMA_BASE, xPWM_CHANNEL1, 750 + STEER_OFFSET); xPWMOutputEnable(xPWMA_BASE, xPWM_CHANNEL1); xPWMStart(xPWMA_BASE, xPWM_CHANNEL1); }