mirror of
https://github.com/jhbruhn/eurorack.git
synced 2025-03-15 02:55:49 +00:00
Fix timer channel bug
This commit is contained in:
parent
752b8c9d93
commit
c28c870687
3 changed files with 9 additions and 13 deletions
|
@ -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 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 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 {
|
class Leds {
|
||||||
public:
|
public:
|
||||||
Leds()
|
Leds()
|
||||||
|
@ -68,24 +70,18 @@ class Leds {
|
||||||
sConfigOC.Pulse = 100;
|
sConfigOC.Pulse = 100;
|
||||||
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH;
|
||||||
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
|
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++) {
|
for(size_t i = 0; i < kNumChannels; i++) {
|
||||||
|
HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, timer_channel[i]);
|
||||||
gpioInit.Mode = GPIO_MODE_AF_PP;
|
gpioInit.Mode = GPIO_MODE_AF_PP;
|
||||||
gpioInit.Pin = kGpioPins[i];
|
gpioInit.Pin = kGpioPins[i];
|
||||||
gpioInit.Pull = GPIO_NOPULL;
|
gpioInit.Pull = GPIO_NOPULL;
|
||||||
gpioInit.Speed = GPIO_SPEED_FREQ_MEDIUM;
|
gpioInit.Speed = GPIO_SPEED_FREQ_MEDIUM;
|
||||||
gpioInit.Alternate = GPIO_AF2_TIM1;
|
gpioInit.Alternate = GPIO_AF2_TIM1;
|
||||||
HAL_GPIO_Init(kGpioPorts[i], &gpioInit);
|
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()
|
void Write()
|
||||||
|
@ -101,13 +97,13 @@ class Leds {
|
||||||
|
|
||||||
if(targetColor == LED_COLOR_RED) {
|
if(targetColor == LED_COLOR_RED) {
|
||||||
HAL_GPIO_WritePin(kGpioColorPorts[i], kGpioColorPins[i], GPIO_PIN_SET);
|
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) {
|
} else if(targetColor == LED_COLOR_GREEN) {
|
||||||
HAL_GPIO_WritePin(kGpioColorPorts[i], kGpioColorPins[i], GPIO_PIN_RESET);
|
HAL_GPIO_WritePin(kGpioColorPorts[i], kGpioColorPins[i], GPIO_PIN_RESET);
|
||||||
intensity = lut_led_green_gamma[intensity >> 4];
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
#define ENABLE_DEBUG_PIN
|
//#define ENABLE_DEBUG_PIN
|
||||||
#include "drivers/debug_pin.h"
|
#include "drivers/debug_pin.h"
|
||||||
|
|
||||||
#include "drivers/adc.h"
|
#include "drivers/adc.h"
|
||||||
|
|
|
@ -24,9 +24,9 @@ class UI {
|
||||||
};
|
};
|
||||||
void Init() {
|
void Init() {
|
||||||
for (size_t i = 0; i < kNumChannels; i++) {
|
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);
|
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);
|
potControllers[i + kNumChannels].Init(&pan_pots[i], pan_hidden_params);
|
||||||
|
|
||||||
volume_att_pots[i] = pan_att_pots[i] = 32767 + (32767 / 2);
|
volume_att_pots[i] = pan_att_pots[i] = 32767 + (32767 / 2);
|
||||||
|
|
Loading…
Reference in a new issue