|
|
@ -1217,26 +1217,19 @@ void _lightInitCommands() { |
|
|
|
#endif // TERMINAL_SUPPORT
|
|
|
|
|
|
|
|
#if LIGHT_PROVIDER == LIGHT_PROVIDER_DIMMER
|
|
|
|
const unsigned long _light_iomux[16] PROGMEM = { |
|
|
|
PERIPHS_IO_MUX_GPIO0_U, PERIPHS_IO_MUX_U0TXD_U, PERIPHS_IO_MUX_GPIO2_U, PERIPHS_IO_MUX_U0RXD_U, |
|
|
|
PERIPHS_IO_MUX_GPIO4_U, PERIPHS_IO_MUX_GPIO5_U, PERIPHS_IO_MUX_SD_CLK_U, PERIPHS_IO_MUX_SD_DATA0_U, |
|
|
|
PERIPHS_IO_MUX_SD_DATA1_U, PERIPHS_IO_MUX_SD_DATA2_U, PERIPHS_IO_MUX_SD_DATA3_U, PERIPHS_IO_MUX_SD_CMD_U, |
|
|
|
PERIPHS_IO_MUX_MTDI_U, PERIPHS_IO_MUX_MTCK_U, PERIPHS_IO_MUX_MTMS_U, PERIPHS_IO_MUX_MTDO_U |
|
|
|
}; |
|
|
|
|
|
|
|
unsigned long getIOMux(unsigned long gpio) { |
|
|
|
unsigned long muxes[16] = { |
|
|
|
PERIPHS_IO_MUX_GPIO0_U, PERIPHS_IO_MUX_U0TXD_U, PERIPHS_IO_MUX_GPIO2_U, PERIPHS_IO_MUX_U0RXD_U, |
|
|
|
PERIPHS_IO_MUX_GPIO4_U, PERIPHS_IO_MUX_GPIO5_U, PERIPHS_IO_MUX_SD_CLK_U, PERIPHS_IO_MUX_SD_DATA0_U, |
|
|
|
PERIPHS_IO_MUX_SD_DATA1_U, PERIPHS_IO_MUX_SD_DATA2_U, PERIPHS_IO_MUX_SD_DATA3_U, PERIPHS_IO_MUX_SD_CMD_U, |
|
|
|
PERIPHS_IO_MUX_MTDI_U, PERIPHS_IO_MUX_MTCK_U, PERIPHS_IO_MUX_MTMS_U, PERIPHS_IO_MUX_MTDO_U |
|
|
|
}; |
|
|
|
return muxes[gpio]; |
|
|
|
} |
|
|
|
|
|
|
|
unsigned long getIOFunc(unsigned long gpio) { |
|
|
|
unsigned long funcs[16] = { |
|
|
|
FUNC_GPIO0, FUNC_GPIO1, FUNC_GPIO2, FUNC_GPIO3, |
|
|
|
FUNC_GPIO4, FUNC_GPIO5, FUNC_GPIO6, FUNC_GPIO7, |
|
|
|
FUNC_GPIO8, FUNC_GPIO9, FUNC_GPIO10, FUNC_GPIO11, |
|
|
|
FUNC_GPIO12, FUNC_GPIO13, FUNC_GPIO14, FUNC_GPIO15 |
|
|
|
}; |
|
|
|
return funcs[gpio]; |
|
|
|
} |
|
|
|
const unsigned long _light_iofunc[16] PROGMEM = { |
|
|
|
FUNC_GPIO0, FUNC_GPIO1, FUNC_GPIO2, FUNC_GPIO3, |
|
|
|
FUNC_GPIO4, FUNC_GPIO5, FUNC_GPIO6, FUNC_GPIO7, |
|
|
|
FUNC_GPIO8, FUNC_GPIO9, FUNC_GPIO10, FUNC_GPIO11, |
|
|
|
FUNC_GPIO12, FUNC_GPIO13, FUNC_GPIO14, FUNC_GPIO15 |
|
|
|
}; |
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
@ -1319,11 +1312,12 @@ void lightSetup() { |
|
|
|
uint32 pwm_duty_init[PWM_CHANNEL_NUM_MAX]; |
|
|
|
uint32 io_info[PWM_CHANNEL_NUM_MAX][3]; |
|
|
|
for (unsigned int i=0; i < _light_channel.size(); i++) { |
|
|
|
const auto pin = _light_channel.at(i).pin; |
|
|
|
pwm_duty_init[i] = 0; |
|
|
|
io_info[i][0] = getIOMux(_light_channel[i].pin); |
|
|
|
io_info[i][1] = getIOFunc(_light_channel[i].pin); |
|
|
|
io_info[i][2] = _light_channel[i].pin; |
|
|
|
pinMode(_light_channel[i].pin, OUTPUT); |
|
|
|
io_info[i][0] = pgm_read_dword(&_light_iomux[pin]); |
|
|
|
io_info[i][1] = pgm_read_dword(&_light_iofunc[pin]); |
|
|
|
io_info[i][2] = pin; |
|
|
|
pinMode(pin, OUTPUT); |
|
|
|
} |
|
|
|
pwm_init(LIGHT_MAX_PWM, pwm_duty_init, PWM_CHANNEL_NUM_MAX, io_info); |
|
|
|
pwm_start(); |
|
|
|