heater-arm.c: turn on only timers needed.
OK, that's kind of nitpicking ... Test: PWM pins should work as before.
This commit is contained in:
parent
1aeb04329c
commit
857fef578b
16
heater-arm.c
16
heater-arm.c
|
|
@ -116,15 +116,19 @@ void heater_init() {
|
||||||
*/
|
*/
|
||||||
if (NUM_HEATERS) { // At least one channel in use.
|
if (NUM_HEATERS) { // At least one channel in use.
|
||||||
|
|
||||||
// For simplicity, turn on all timers, not only the used ones.
|
|
||||||
// TODO: turn on only the used ones. we know pin ## TIMER.
|
|
||||||
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 7); // Turn on CT16B0 power.
|
|
||||||
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 8); // Turn on CT16B1 power.
|
|
||||||
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 10); // Turn on CT32B1 power.
|
|
||||||
|
|
||||||
// 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, pwm) \
|
||||||
|
if (pin ## _TIMER == LPC_TMR16B0) { \
|
||||||
|
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 7); /* Turn on CT16B0. */ \
|
||||||
|
} \
|
||||||
|
else if (pin ## _TIMER == LPC_TMR16B1) { \
|
||||||
|
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 8); /* Turn on CT16B1. */ \
|
||||||
|
} \
|
||||||
|
else if (pin ## _TIMER == LPC_TMR32B1) { \
|
||||||
|
LPC_SYSCON->SYSAHBCLKCTRL |= (1 << 10); /* Turn on CT32B1. */ \
|
||||||
|
} \
|
||||||
|
\
|
||||||
LPC_IOCON->pin ## _CMSIS = pin ## _PWM; /* Connect to timer. */ \
|
LPC_IOCON->pin ## _CMSIS = pin ## _PWM; /* Connect to timer. */ \
|
||||||
/*pin ## _TIMER->IR = 0; ( = reset value) No interrupts. */ \
|
/*pin ## _TIMER->IR = 0; ( = reset value) No interrupts. */ \
|
||||||
pin ## _TIMER->TCR = (1 << 0); /* Enable counter. */ \
|
pin ## _TIMER->TCR = (1 << 0); /* Enable counter. */ \
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue