@@ -117,10 +117,10 @@ void analogWrite(uint8_t pin, int val)
117117 {
118118 switch (digitalPinToTimer (pin ))
119119 {
120- #ifdef SUPPORT_ALTERNATE_MAPPINGS
120+ #ifdef NEED_TIMER_11_12
121121 case TIMER11 :
122122 // connect pwm to pin on timer 1, channel 1
123- alternateFunction (1 );
123+ // alternateFunction(1);
124124#ifdef USE_SPL
125125 TIM1_OC1Init (
126126 TIM1_OCMODE_PWM1 ,
@@ -146,7 +146,7 @@ void analogWrite(uint8_t pin, int val)
146146 break ;
147147 case TIMER12 :
148148 // connect pwm to pin on timer 1, channel 2
149- alternateFunction (1 );
149+ // alternateFunction(1);
150150#ifdef USE_SPL
151151 TIM1_OC2Init (
152152 TIM1_OCMODE_PWM1 ,
@@ -170,7 +170,7 @@ void analogWrite(uint8_t pin, int val)
170170 TIM1 -> CCR2L = (uint8_t )(val );
171171#endif // if use_spl
172172 break ;
173- #endif // if alternate_mappings
173+ #endif // if NEED_TIMER_11_12
174174 case TIMER13 :
175175 // connect pwm to pin on timer 1, channel 3
176176#ifdef USE_SPL
@@ -272,6 +272,24 @@ void analogWrite(uint8_t pin, int val)
272272 TIM2 -> CCR3L = (uint8_t )(val );
273273#endif
274274 break ;
275+ #ifdef NEED_TIMER_31_32
276+ case TIMER31 :
277+ // connect pwm to pin on timer 3, channel 1
278+ // eigentlich würde dies genügen:
279+ // write MSB first, DO NOT USE ldw instruction!
280+ TIM3 -> CCER1 |= TIM3_CCER1_CC1E ;
281+ TIM3 -> CCMR1 = TIM3_OCMODE_PWM1 | TIM3_CCMR_OCxPE ;
282+ TIM3 -> CCR1H = 0 ;
283+ TIM3 -> CCR1L = (uint8_t )(val );
284+ break ;
285+ case TIMER32 :
286+ // connect pwm to pin on timer 3, channel 2
287+ TIM3 -> CCMR2 = TIM3_OCMODE_PWM1 | TIM3_CCMR_OCxPE ;
288+ TIM3 -> CCER1 |= TIM3_CCER1_CC2E ;
289+ TIM3 -> CCR2H = 0 ;
290+ TIM3 -> CCR2L = (uint8_t )(val );
291+ break ;
292+ #endif // ifdef NEED_TIMER_31_32
275293 case NOT_ON_TIMER :
276294 default :
277295 if (val < 128 ) {
0 commit comments