|
|
|
@ -106,12 +106,16 @@ void timerInitOutputCompare( timerNo_t timer,
|
|
|
|
|
uint8_t timerIoChannel,
|
|
|
|
|
pinNo_t pinNo,
|
|
|
|
|
uint16_t altFunction,
|
|
|
|
|
uint8_t polarity)
|
|
|
|
|
uint8_t polarity,
|
|
|
|
|
uint32_t ccValue)
|
|
|
|
|
{
|
|
|
|
|
timerStop(timer);
|
|
|
|
|
pinSetMode(pinNo,alternate);
|
|
|
|
|
pinSetAlternate(pinNo,altFunction);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: check for value existing register size
|
|
|
|
|
//if(ccValue)
|
|
|
|
|
// timerThrowError(timerError_t error)
|
|
|
|
|
switch(timerIoChannel)
|
|
|
|
|
{
|
|
|
|
|
case 1:
|
|
|
|
@ -120,6 +124,7 @@ void timerInitOutputCompare( timerNo_t timer,
|
|
|
|
|
BASE->CCER |= TIM_CCER_CC1E;
|
|
|
|
|
BASE->CCER |= (1&&polarity) << TIM_CCER_CC1P_Pos;
|
|
|
|
|
BASE->CCER &= ~TIM_CCER_CC1NP;
|
|
|
|
|
BASE->CCR1 = (uint16_t)ccValue;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
BASE->CCMR1 &= ~TIM_CCMR1_OC2M;
|
|
|
|
@ -127,6 +132,7 @@ void timerInitOutputCompare( timerNo_t timer,
|
|
|
|
|
BASE->CCER |= TIM_CCER_CC2E;
|
|
|
|
|
BASE->CCER |= (1&&polarity) << TIM_CCER_CC2P_Pos;
|
|
|
|
|
BASE->CCER &= ~TIM_CCER_CC2NP;
|
|
|
|
|
BASE->CCR2 = (uint16_t)ccValue;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
BASE->CCMR2 &= ~TIM_CCMR2_OC3M;
|
|
|
|
@ -134,6 +140,7 @@ void timerInitOutputCompare( timerNo_t timer,
|
|
|
|
|
BASE->CCER |= TIM_CCER_CC3E;
|
|
|
|
|
BASE->CCER |= (1&&polarity) << TIM_CCER_CC3P_Pos;
|
|
|
|
|
BASE->CCER &= ~TIM_CCER_CC3NP;
|
|
|
|
|
BASE->CCR3 = (uint16_t)ccValue;
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
BASE->CCMR2 &= ~TIM_CCMR2_OC4M;
|
|
|
|
@ -141,6 +148,7 @@ void timerInitOutputCompare( timerNo_t timer,
|
|
|
|
|
BASE->CCER |= TIM_CCER_CC4E;
|
|
|
|
|
BASE->CCER |= (1&&polarity) << TIM_CCER_CC4P_Pos;
|
|
|
|
|
BASE->CCER &= ~TIM_CCER_CC4NP;
|
|
|
|
|
BASE->CCR4 = (uint16_t)ccValue;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
timerThrowError(ccChannelNoOutOfRange);
|
|
|
|
@ -148,6 +156,29 @@ void timerInitOutputCompare( timerNo_t timer,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void timerSetCounterCompareValue(timerNo_t timer,
|
|
|
|
|
uint8_t timerIoChannel,
|
|
|
|
|
uint32_t ccValue)
|
|
|
|
|
{
|
|
|
|
|
switch(timerIoChannel) {
|
|
|
|
|
case 1:
|
|
|
|
|
BASE->CCR1 = (uint16_t)ccValue;
|
|
|
|
|
break;
|
|
|
|
|
case 2:
|
|
|
|
|
BASE->CCR2 = (uint16_t)ccValue;
|
|
|
|
|
break;
|
|
|
|
|
case 3:
|
|
|
|
|
BASE->CCR3 = (uint16_t)ccValue;
|
|
|
|
|
break;
|
|
|
|
|
case 4:
|
|
|
|
|
BASE->CCR4 = (uint16_t)ccValue;
|
|
|
|
|
break;
|
|
|
|
|
default:
|
|
|
|
|
timerThrowError(ccChannelNoOutOfRange);
|
|
|
|
|
break;
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Bus Clock
|
|
|
|
|
* ------------------------------ = Duty (Hz)
|
|
|
|
|