diff --git a/stereo_mix/drivers/leds.h b/stereo_mix/drivers/leds.h index ef40e19..667d4bb 100644 --- a/stereo_mix/drivers/leds.h +++ b/stereo_mix/drivers/leds.h @@ -29,6 +29,8 @@ static const uint16_t kGpioPins[] = { GPIO_PIN_8, GPIO_PIN_9, GPIO_PIN_10, GPIO_ static GPIO_TypeDef* kGpioColorPorts[] = {GPIOC, GPIOC, GPIOF, GPIOF}; static const uint16_t kGpioColorPins[] = {GPIO_PIN_14, GPIO_PIN_15, GPIO_PIN_6, GPIO_PIN_7}; +static const uint32_t timer_channel[] = {TIM_CHANNEL_1, TIM_CHANNEL_2, TIM_CHANNEL_3, TIM_CHANNEL_4}; + class Leds { public: Leds() @@ -68,24 +70,18 @@ class Leds { sConfigOC.Pulse = 100; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_DISABLE; - HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1); - HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_2); - HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_3); - HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_4); for(size_t i = 0; i < kNumChannels; i++) { + HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, timer_channel[i]); gpioInit.Mode = GPIO_MODE_AF_PP; gpioInit.Pin = kGpioPins[i]; gpioInit.Pull = GPIO_NOPULL; gpioInit.Speed = GPIO_SPEED_FREQ_MEDIUM; gpioInit.Alternate = GPIO_AF2_TIM1; HAL_GPIO_Init(kGpioPorts[i], &gpioInit); + HAL_TIM_PWM_Start(&htim1, timer_channel[i]); } - HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); - HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); - HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_3); - HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_4); } void Write() @@ -101,13 +97,13 @@ class Leds { if(targetColor == LED_COLOR_RED) { HAL_GPIO_WritePin(kGpioColorPorts[i], kGpioColorPins[i], GPIO_PIN_SET); - intensity = 65534 - lut_led_red_gamma[intensity >> 4]; + intensity = 65535 - lut_led_red_gamma[intensity >> 4]; } else if(targetColor == LED_COLOR_GREEN) { HAL_GPIO_WritePin(kGpioColorPorts[i], kGpioColorPins[i], GPIO_PIN_RESET); intensity = lut_led_green_gamma[intensity >> 4]; } - __HAL_TIM_SET_COMPARE(&htim1, i, intensity >> 4); + __HAL_TIM_SET_COMPARE(&htim1, timer_channel[i], intensity >> 4); } } diff --git a/stereo_mix/stereo_mix.cc b/stereo_mix/stereo_mix.cc index d97859f..4a67b24 100644 --- a/stereo_mix/stereo_mix.cc +++ b/stereo_mix/stereo_mix.cc @@ -1,5 +1,5 @@ -#define ENABLE_DEBUG_PIN +//#define ENABLE_DEBUG_PIN #include "drivers/debug_pin.h" #include "drivers/adc.h" diff --git a/stereo_mix/ui.h b/stereo_mix/ui.h index 0b340f3..20cf9f7 100644 --- a/stereo_mix/ui.h +++ b/stereo_mix/ui.h @@ -24,9 +24,9 @@ class UI { }; void Init() { for (size_t i = 0; i < kNumChannels; i++) { - uint16_t* volume_hidden_params[kNumChannels] = {&volume_att_pots[i], &volume_att_pots[i], &volume_att_pots[i], &volume_att_pots[i]}; + uint16_t* volume_hidden_params[] = {&volume_att_pots[i], &volume_att_pots[i], &volume_att_pots[i], &volume_att_pots[i]}; potControllers[i].Init(&volume_pots[i], volume_hidden_params); - uint16_t* pan_hidden_params[kNumChannels] = {&pan_att_pots[i], &pan_att_pots[i], &pan_att_pots[i], &pan_att_pots[i]}; + uint16_t* pan_hidden_params[] = {&pan_att_pots[i], &pan_att_pots[i], &pan_att_pots[i], &pan_att_pots[i]}; potControllers[i + kNumChannels].Init(&pan_pots[i], pan_hidden_params); volume_att_pots[i] = pan_att_pots[i] = 32767 + (32767 / 2);