heater-stm32.c: rework init
This commit is contained in:
parent
772d507a45
commit
635d40a42a
|
|
@ -177,9 +177,8 @@ void heater_init() {
|
|||
// Auto-generate pin setup.
|
||||
#undef DEFINE_HEATER_ACTUAL
|
||||
#define DEFINE_HEATER_ACTUAL(name, pin, invert, pwm, ...) \
|
||||
if (PWM_TYPE(pwm, pin) == HARDWARE_PWM) { \
|
||||
if (PWM_TYPE(pwm, pin) == HARDWARE_PWM) { \
|
||||
uint32_t freq; \
|
||||
uint8_t macro_mask; \
|
||||
if (pin ## _TIMER == TIM1) { \
|
||||
RCC->APB2ENR |= RCC_APB2ENR_TIM1EN; } /* turn on TIM1 */ \
|
||||
else if (pin ## _TIMER == TIM2) { \
|
||||
|
|
@ -203,21 +202,18 @@ void heater_init() {
|
|||
if (freq < 1) \
|
||||
freq = 1; \
|
||||
pin ## _TIMER->PSC = freq - 1; /* 1kHz */ \
|
||||
macro_mask = pin ## _CHANNEL > 2 ? 2 : 1; \
|
||||
if (macro_mask == 1) { \
|
||||
pin ## _TIMER->CCMR1 |= 0x0D << (3 + (8 * (pin ## _CHANNEL / macro_mask - 1))); \
|
||||
/* ch 2 / mm 1 - 1 = 1, ch 1 / mm 1 - 1 = 0*/ \
|
||||
} else { \
|
||||
pin ## _TIMER->CCMR2 |= 0x0D << (3 + (8 * (pin ## _CHANNEL / macro_mask - 1))); \
|
||||
/* ch 4 / mm 2 - 1 = 1, ch 3 / mm 2 - 1 = 0*/ \
|
||||
} \
|
||||
if (pin ## _CHANNEL <= 2) \
|
||||
pin ## _TIMER->CCMR1 |= 0x68UL << (8 * (pin ## _CHANNEL && 2)); \
|
||||
else \
|
||||
pin ## _TIMER->CCMR2 |= 0x68UL << (8 * (pin ## _CHANNEL && 4)); \
|
||||
\
|
||||
pin ## _TIMER->CCER |= EXPANDER(TIM_CCER_CC, pin ## _CHANNEL, E); \
|
||||
/* output enable */ \
|
||||
if (pin ## _INVERT ^ invert) { \
|
||||
if (pin ## _INVERT ^ invert) \
|
||||
pin ## _TIMER->CCER |= EXPANDER(TIM_CCER_CC, pin ## _CHANNEL, P); \
|
||||
} else { \
|
||||
pin ## _TIMER->CCER &= ~(EXPANDER(TIM_CCER_CC, pin ## _CHANNEL, P)); \
|
||||
} \
|
||||
else \
|
||||
pin ## _TIMER->CCER &= ~(EXPANDER(TIM_CCER_CC, pin ## _CHANNEL, P)); \
|
||||
\
|
||||
/* invert the signal for negated timers*/ \
|
||||
/* also with a XOR for inverted heaters */ \
|
||||
pin ## _TIMER->EGR |= TIM_EGR_UG; /* update generation */ \
|
||||
|
|
|
|||
Loading…
Reference in New Issue