void DRV8833_InitMotorB(){ if(!SysCtlPeripheralReady(SYSCTL_PERIPH_PWM0)) SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); if(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOB)) SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlDelay(3); GPIOPinConfigure(GPIO_PB4_M0PWM2); GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_4); GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_4,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); PWMClockSet(PWM0_BASE, PWM_SYSCLK_DIV_1); PWMGenConfigure(PWM0_BASE, PWM_GEN_1, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); uint32_t duty = 0; PWMOutputUpdateMode(PWM0_BASE,PWM_OUT_2_BIT|PWM_OUT_3_BIT,PWM_OUTPUT_MODE_NO_SYNC); PWMGenPeriodSet(PWM0_BASE, PWM_GEN_1, freq); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_2, duty); PWMOutputState(PWM0_BASE, PWM_OUT_2_BIT, true); GPIOPinConfigure(GPIO_PB5_M0PWM3); GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_5); GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_5,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_3, duty); PWMOutputState(PWM0_BASE, PWM_OUT_3_BIT, true); HWREG(GPIO_PORTB_BASE+GPIO_O_AFSEL) &= ~0x30; PWMGenEnable(PWM0_BASE, PWM_GEN_1); }
void DRV8833_InitMotorA(){ if(!SysCtlPeripheralReady(SYSCTL_PERIPH_PWM0)) SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); if(!SysCtlPeripheralReady(SYSCTL_PERIPH_GPIOB)) SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOB); SysCtlDelay(3); GPIOPinConfigure(GPIO_PB6_M0PWM0); GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_6); GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_6,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); PWMClockSet(PWM0_BASE, PWM_SYSCLK_DIV_1); PWMGenConfigure(PWM0_BASE, PWM_GEN_0, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); uint32_t duty = 0; PWMOutputUpdateMode(PWM0_BASE,PWM_OUT_0_BIT|PWM_OUT_1_BIT,PWM_OUTPUT_MODE_NO_SYNC); PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0, freq); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, duty); PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT, true); GPIOPinConfigure(GPIO_PB7_M0PWM1); GPIOPinTypePWM(GPIO_PORTB_BASE, GPIO_PIN_7); GPIOPadConfigSet(GPIO_PORTB_BASE, GPIO_PIN_7,GPIO_STRENGTH_2MA,GPIO_PIN_TYPE_STD_WPU); PWMPulseWidthSet(PWM0_BASE, PWM_OUT_1, duty); PWMOutputState(PWM0_BASE, PWM_OUT_1_BIT, true); PWMGenEnable(PWM0_BASE, PWM_GEN_0); }
void PWM_Setup() { SysCtlPWMClockSet(PWM_SYSCLK_DIV_64); // // Configure the PWM generator for count down mode with immediate updates // to the parameters. // PWMGenConfigure(PWM1_BASE, PWM_GEN_3, PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC); // Set the period. For a 50 KHz frequency, the period = 1/50,000, or 20 // microseconds. For a 20 MHz clock, this translates to 400 clock ticks. // Use this value to set the period. // PWMGenPeriodSet(PWM1_BASE, PWM_GEN_3, MAXPERIOD); // // Set the pulse width of PWM1 for a 75% duty cycle. // PWMPulseWidthSet(PWM1_BASE, PWM_OUT_6, 0); PWMPulseWidthSet(PWM1_BASE, PWM_OUT_5, 0); // 50MHZ is to fast PWMClockSet(PWM1_BASE,PWM_SYSCLK_DIV_64); // // Start the timers in generator 3. // PWMGenEnable(PWM1_BASE, PWM_GEN_3); // // Enable the outputs. // PWMOutputState(PWM1_BASE, PWM_OUT_6_BIT , true); }
/* * ======== PWMTiva_setPrescalar ======== * Set PWM prescalar for a given peripheral. * * @param pwmBase PWM period in timer ticks * @param presRegVal prescalar register value */ static inline void PWMTiva_setPrescalar(uint32_t pwmBase, uint32_t presRegVal) { /* Set PWM prescalar - device dependent */ if ((HWREG(SYSCTL_DID0) & SYSCTL_DID0_CLASS_M) == SYSCTL_DID0_CLASS_TM4C129) { /* TM4C129 device */ PWMClockSet(pwmBase, presRegVal); } else { /* TM4C123 device */ SysCtlPWMClockSet(presRegVal); } }
void bsp_pwm0_init(void) { /*Enable device*/ SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); /*Set clock divider*/ PWMClockSet(PWM0_BASE,PWM_SYSCLK_DIV_64); /*Enable PWM pin*/ GPIOPinConfigure(LCD_PWM_CHANNEL); GPIOPinTypePWM(LCD_PWM_PORT, LCD_PWM_PIN); /*Configure PWM generator*/ PWMGenConfigure(PWM0_BASE, PWM_GEN_0,(PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC)); /*Set PWM timer period*/ PWMGenPeriodSet(PWM0_BASE, PWM_GEN_0,gSysClock/10000); /*Set width for PWM0*/ PWMPulseWidthSet(PWM0_BASE, PWM_OUT_0, 50*PWMGenPeriodGet(PWM0_BASE,PWM_GEN_0)/100); /*Enable output*/ PWMOutputState(PWM0_BASE, PWM_OUT_0_BIT, 0); /*Enable Generator*/ PWMGenEnable(PWM0_BASE, PWM_GEN_0); }
void bsp_pwm_for_sense_init(void) { /*Enable device*/ SysCtlPeripheralEnable(SYSCTL_PERIPH_PWM0); /*Set clock divider*/ PWMClockSet(PWM0_BASE,PWM_SYSCLK_DIV_1); /*Enable PWM pin*/ GPIOPinConfigure(GPIO_PK5_M0PWM7); GPIOPinTypePWM(SENSE_THRES_PORT, SENSE_THRES_PIN); /*Configure PWM generator*/ PWMGenConfigure(PWM0_BASE, PWM_GEN_3,(PWM_GEN_MODE_DOWN | PWM_GEN_MODE_NO_SYNC)); /*Set PWM timer period*/ PWMGenPeriodSet(PWM0_BASE, PWM_GEN_3,gSysClock/1000000); /*Set width for PWM0*/ PWMPulseWidthSet(PWM0_BASE, PWM_OUT_7, 1*PWMGenPeriodGet(PWM0_BASE,PWM_GEN_3)/5); /*ensable output*/ PWMOutputState(PWM0_BASE, PWM_OUT_7_BIT, 1); /*Enable Generator*/ PWMGenEnable(PWM0_BASE, PWM_GEN_3); }