Fixed bug 3114467.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@2408 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
gdisirio 2010-11-21 13:09:42 +00:00
parent af0a2cee78
commit 2847f7574d
2 changed files with 9 additions and 6 deletions

View File

@ -87,8 +87,9 @@ static void stop_channels(PWMDriver *pwmp) {
pwmp->pd_tim->CCR2 = 0; /* Comparator 2 disabled. */ pwmp->pd_tim->CCR2 = 0; /* Comparator 2 disabled. */
pwmp->pd_tim->CCR3 = 0; /* Comparator 3 disabled. */ pwmp->pd_tim->CCR3 = 0; /* Comparator 3 disabled. */
pwmp->pd_tim->CCR4 = 0; /* Comparator 4 disabled. */ pwmp->pd_tim->CCR4 = 0; /* Comparator 4 disabled. */
pwmp->pd_tim->CCMR1 = 0; /* Channels 1 and 2 frozen. */ /* Channels forced to idle.*/
pwmp->pd_tim->CCMR2 = 0; /* Channels 3 and 4 frozen. */ pwmp->pd_tim->CCMR1 = TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC2M_2;
pwmp->pd_tim->CCMR2 = TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC4M_2;
} }
#if STM32_PWM_USE_TIM2 || STM32_PWM_USE_TIM3 || STM32_PWM_USE_TIM4 || \ #if STM32_PWM_USE_TIM2 || STM32_PWM_USE_TIM3 || STM32_PWM_USE_TIM4 || \
@ -504,22 +505,22 @@ void pwm_lld_disable_channel(PWMDriver *pwmp, pwmchannel_t channel) {
switch (channel) { switch (channel) {
case 0: case 0:
pwmp->pd_tim->CCR1 = 0; pwmp->pd_tim->CCR1 = 0;
pwmp->pd_tim->CCMR1 = pwmp->pd_tim->CCMR1 & 0xFF00; pwmp->pd_tim->CCMR1 = (pwmp->pd_tim->CCMR1 & 0xFF00) | TIM_CCMR1_OC1M_2;
pwmp->pd_tim->DIER &= ~TIM_DIER_CC1IE; pwmp->pd_tim->DIER &= ~TIM_DIER_CC1IE;
break; break;
case 1: case 1:
pwmp->pd_tim->CCR2 = 0; pwmp->pd_tim->CCR2 = 0;
pwmp->pd_tim->CCMR1 = pwmp->pd_tim->CCMR1 & 0x00FF; pwmp->pd_tim->CCMR1 = (pwmp->pd_tim->CCMR1 & 0x00FF) | TIM_CCMR1_OC2M_2;
pwmp->pd_tim->DIER &= ~TIM_DIER_CC2IE; pwmp->pd_tim->DIER &= ~TIM_DIER_CC2IE;
break; break;
case 2: case 2:
pwmp->pd_tim->CCR3 = 0; pwmp->pd_tim->CCR3 = 0;
pwmp->pd_tim->CCMR2 = pwmp->pd_tim->CCMR2 & 0xFF00; pwmp->pd_tim->CCMR2 = (pwmp->pd_tim->CCMR2 & 0xFF00) | TIM_CCMR2_OC3M_2;
pwmp->pd_tim->DIER &= ~TIM_DIER_CC3IE; pwmp->pd_tim->DIER &= ~TIM_DIER_CC3IE;
break; break;
case 3: case 3:
pwmp->pd_tim->CCR4 = 0; pwmp->pd_tim->CCR4 = 0;
pwmp->pd_tim->CCMR2 = pwmp->pd_tim->CCMR2 & 0x00FF; pwmp->pd_tim->CCMR2 = (pwmp->pd_tim->CCMR2 & 0x00FF) | TIM_CCMR2_OC4M_2;
pwmp->pd_tim->DIER &= ~TIM_DIER_CC4IE; pwmp->pd_tim->DIER &= ~TIM_DIER_CC4IE;
break; break;
} }

View File

@ -65,6 +65,8 @@
***************************************************************************** *****************************************************************************
*** 2.1.4 *** *** 2.1.4 ***
- FIX: Fixed PWM channels return to IDLE state in STM32 PWM driver (bug
3114467)(backported to 2.0.8).
- FIX: Fixed wrong initializer macros in STM32 PWM driver (bug 3114319). - FIX: Fixed wrong initializer macros in STM32 PWM driver (bug 3114319).
- FIX: Fixed syntax error in STM32 PWM driver(bug 3114266). - FIX: Fixed syntax error in STM32 PWM driver(bug 3114266).
- FIX: Fixed typo in board name (bug 3113574)(backported to 2.0.7). - FIX: Fixed typo in board name (bug 3113574)(backported to 2.0.7).