STM32F411: support inverted heater pin signals.
This commit is contained in:
parent
afc4c3e8e4
commit
6f334be231
|
|
@ -72,7 +72,7 @@ typedef struct {
|
||||||
} heater_definition_t;
|
} heater_definition_t;
|
||||||
|
|
||||||
#undef DEFINE_HEATER
|
#undef DEFINE_HEATER
|
||||||
#define DEFINE_HEATER(name, pin, pwm) \
|
#define DEFINE_HEATER(name, pin, invert, pwm) \
|
||||||
{ \
|
{ \
|
||||||
{ pwm && pin ## _TIMER ? \
|
{ pwm && pin ## _TIMER ? \
|
||||||
&(pin ## _TIMER-> EXPANDER(CCR, pin ## _CHANNEL,)) : \
|
&(pin ## _TIMER-> EXPANDER(CCR, pin ## _CHANNEL,)) : \
|
||||||
|
|
@ -155,7 +155,7 @@ void heater_init() {
|
||||||
*/
|
*/
|
||||||
// Auto-generate pin setup.
|
// Auto-generate pin setup.
|
||||||
#undef DEFINE_HEATER
|
#undef DEFINE_HEATER
|
||||||
#define DEFINE_HEATER(name, pin, pwm) \
|
#define DEFINE_HEATER(name, pin, invert, pwm) \
|
||||||
if (pwm && pin ## _TIMER) { \
|
if (pwm && pin ## _TIMER) { \
|
||||||
uint32_t freq; \
|
uint32_t freq; \
|
||||||
uint8_t macro_mask; \
|
uint8_t macro_mask; \
|
||||||
|
|
@ -201,19 +201,19 @@ void heater_init() {
|
||||||
} \
|
} \
|
||||||
pin ## _TIMER->CCER |= EXPANDER(TIM_CCER_CC, pin ## _CHANNEL, E); \
|
pin ## _TIMER->CCER |= EXPANDER(TIM_CCER_CC, pin ## _CHANNEL, E); \
|
||||||
/* output enable */ \
|
/* output enable */ \
|
||||||
if (pin ## _INVERT) { \
|
if (pin ## _INVERT ^ invert) { \
|
||||||
pin ## _TIMER->CCER |= EXPANDER(TIM_CCER_CC, pin ## _CHANNEL, P); \
|
pin ## _TIMER->CCER |= EXPANDER(TIM_CCER_CC, pin ## _CHANNEL, P); \
|
||||||
} else { \
|
} else { \
|
||||||
pin ## _TIMER->CCER &= ~(EXPANDER(TIM_CCER_CC, pin ## _CHANNEL, P)); \
|
pin ## _TIMER->CCER &= ~(EXPANDER(TIM_CCER_CC, pin ## _CHANNEL, P)); \
|
||||||
} \
|
} \
|
||||||
/* invert the signal for negated timers*/ \
|
/* invert the signal for negated timers*/ \
|
||||||
/* TODO: use this also with a XOR for inverted heaters later */ \
|
/* also with a XOR for inverted heaters */ \
|
||||||
pin ## _TIMER->EGR |= TIM_EGR_UG; /* update generation */ \
|
pin ## _TIMER->EGR |= TIM_EGR_UG; /* update generation */ \
|
||||||
pin ## _TIMER->CR1 |= TIM_CR1_CEN; /* enable counters */ \
|
pin ## _TIMER->CR1 |= TIM_CR1_CEN; /* enable counters */ \
|
||||||
} \
|
} \
|
||||||
else { \
|
else { \
|
||||||
SET_OUTPUT(pin); \
|
SET_OUTPUT(pin); \
|
||||||
WRITE(pin, 0); \
|
WRITE(pin, invert ? 1 : 0); \
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "config_wrapper.h"
|
#include "config_wrapper.h"
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue