diff --git a/stereo_mix/drivers/leds.h b/stereo_mix/drivers/leds.h index eeb638f..51795ec 100644 --- a/stereo_mix/drivers/leds.h +++ b/stereo_mix/drivers/leds.h @@ -26,7 +26,8 @@ class Leds { } void Write() { - pwm_counter += 2; + pwm_counter++; + pwm_counter &= 0x1ff; // equals to if(pwm_counter > 512) pwm_counter = 0; for (size_t i = 0; i < kNumChannels; i++) { if (intensities[0] && lut_led_gamma[intensities[i]] >= pwm_counter) { @@ -44,6 +45,6 @@ class Leds { } private: - uint8_t pwm_counter; + uint16_t pwm_counter; uint8_t intensities[kNumChannels]; }; diff --git a/stereo_mix/resources.cc b/stereo_mix/resources.cc index e5ddd32..a77b515 100644 --- a/stereo_mix/resources.cc +++ b/stereo_mix/resources.cc @@ -3112,85 +3112,85 @@ const uint16_t lut_right_cos_pan[] = { 176, 151, 126, 101, 75, 50, 25, 0, }; +const uint16_t lut_led_gamma[] = { + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 1, 1, + 1, 1, 1, 1, + 1, 1, 1, 1, + 2, 2, 2, 2, + 2, 2, 2, 3, + 3, 3, 3, 4, + 4, 4, 4, 4, + 5, 5, 5, 6, + 6, 6, 7, 7, + 7, 8, 8, 8, + 9, 9, 10, 10, + 11, 11, 12, 12, + 13, 13, 14, 14, + 15, 15, 16, 17, + 17, 18, 19, 19, + 20, 21, 21, 22, + 23, 24, 24, 25, + 26, 27, 28, 29, + 29, 30, 31, 32, + 33, 34, 35, 36, + 37, 38, 39, 40, + 42, 43, 44, 45, + 46, 47, 49, 50, + 51, 52, 54, 55, + 56, 58, 59, 61, + 62, 63, 65, 66, + 68, 70, 71, 73, + 74, 76, 78, 79, + 81, 83, 84, 86, + 88, 90, 92, 94, + 96, 97, 99, 101, + 103, 105, 107, 110, + 112, 114, 116, 118, + 120, 122, 125, 127, + 129, 132, 134, 136, + 139, 141, 144, 146, + 149, 151, 154, 157, + 159, 162, 165, 167, + 170, 173, 176, 178, + 181, 184, 187, 190, + 193, 196, 199, 202, + 205, 208, 212, 215, + 218, 221, 225, 228, + 231, 235, 238, 242, + 245, 249, 252, 256, + 259, 263, 267, 270, + 274, 278, 282, 286, + 289, 293, 297, 301, + 305, 309, 313, 318, + 322, 326, 330, 334, + 339, 343, 347, 352, + 356, 361, 365, 370, + 374, 379, 384, 388, + 393, 398, 402, 407, + 412, 417, 422, 427, + 432, 437, 442, 447, + 453, 458, 463, 468, + 474, 479, 484, 490, + 495, 501, 506, 512, +}; const uint16_t* lookup_table_u16_table[] = { lut_linear_to_exp, lut_left_sin_pan, lut_right_cos_pan, -}; - -const uint8_t lut_led_gamma[] = { - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 0, 0, - 0, 0, 1, 1, - 1, 1, 1, 1, - 1, 1, 1, 2, - 2, 2, 2, 2, - 2, 3, 3, 3, - 3, 3, 4, 4, - 4, 4, 5, 5, - 5, 5, 6, 6, - 6, 7, 7, 7, - 8, 8, 8, 9, - 9, 9, 10, 10, - 11, 11, 11, 12, - 12, 13, 13, 14, - 14, 14, 15, 15, - 16, 16, 17, 17, - 18, 18, 19, 20, - 20, 21, 21, 22, - 22, 23, 24, 24, - 25, 25, 26, 27, - 27, 28, 29, 29, - 30, 31, 31, 32, - 33, 33, 34, 35, - 36, 36, 37, 38, - 39, 40, 40, 41, - 42, 43, 44, 44, - 45, 46, 47, 48, - 49, 50, 51, 51, - 52, 53, 54, 55, - 56, 57, 58, 59, - 60, 61, 62, 63, - 64, 65, 66, 67, - 68, 69, 70, 71, - 72, 73, 75, 76, - 77, 78, 79, 80, - 81, 83, 84, 85, - 86, 87, 88, 90, - 91, 92, 93, 95, - 96, 97, 98, 100, - 101, 102, 104, 105, - 106, 107, 109, 110, - 112, 113, 114, 116, - 117, 118, 120, 121, - 123, 124, 126, 127, - 129, 130, 131, 133, - 134, 136, 137, 139, - 141, 142, 144, 145, - 147, 148, 150, 151, - 153, 155, 156, 158, - 160, 161, 163, 165, - 166, 168, 170, 171, - 173, 175, 176, 178, - 180, 182, 183, 185, - 187, 189, 191, 192, - 194, 196, 198, 200, - 202, 203, 205, 207, - 209, 211, 213, 215, - 217, 219, 221, 223, - 225, 226, 228, 230, - 232, 234, 236, 238, - 241, 243, 245, 247, - 249, 251, 253, 255, -}; - - -const uint8_t* lookup_table_u8_table[] = { lut_led_gamma, }; + +const uint8_t* lookup_table_u8_table[] = { +}; + + } // namespace stereo_mix diff --git a/stereo_mix/resources.h b/stereo_mix/resources.h index 7259056..ceeb8f8 100644 --- a/stereo_mix/resources.h +++ b/stereo_mix/resources.h @@ -49,14 +49,14 @@ extern const uint8_t* lookup_table_u8_table[]; extern const uint16_t lut_linear_to_exp[]; extern const uint16_t lut_left_sin_pan[]; extern const uint16_t lut_right_cos_pan[]; -extern const uint8_t lut_led_gamma[]; +extern const uint16_t lut_led_gamma[]; #define LUT_LINEAR_TO_EXP 0 #define LUT_LINEAR_TO_EXP_SIZE 4096 #define LUT_LEFT_SIN_PAN 1 #define LUT_LEFT_SIN_PAN_SIZE 4096 #define LUT_RIGHT_COS_PAN 2 #define LUT_RIGHT_COS_PAN_SIZE 4096 -#define LUT_LED_GAMMA 0 +#define LUT_LED_GAMMA 3 #define LUT_LED_GAMMA_SIZE 256 } // namespace stereo_mix diff --git a/stereo_mix/resources/lookup_tables.py b/stereo_mix/resources/lookup_tables.py index 289e4d0..0fccf8e 100644 --- a/stereo_mix/resources/lookup_tables.py +++ b/stereo_mix/resources/lookup_tables.py @@ -28,10 +28,10 @@ lookup_tables_u16.append(('left_sin_pan', l_pan)) lookup_tables_u16.append(('right_cos_pan', r_pan)) # led gamma correction -gamma = 2.1 +gamma = 2.8 max_in = 255 -max_out = 255 +max_out = 512 input_vals = np.linspace(0, max_in, num=max_in + 1) gamma_correction = ((input_vals / max_in) ** gamma) * max_out + 0.5 -lookup_tables_u8.append(('led_gamma', np.floor(gamma_correction))) +lookup_tables_u16.append(('led_gamma', np.floor(gamma_correction))) diff --git a/stereo_mix/stereo_mix.cc b/stereo_mix/stereo_mix.cc index 64a3dde..e590cfd 100644 --- a/stereo_mix/stereo_mix.cc +++ b/stereo_mix/stereo_mix.cc @@ -102,7 +102,7 @@ void Init(void) HAL_NVIC_SetPriority(TIM3_IRQn, 0, 0); HAL_NVIC_EnableIRQ(TIM3_IRQn); __HAL_RCC_TIM3_CLK_ENABLE(); - htim3.Init.Prescaler = 24; + htim3.Init.Prescaler = 14; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 128; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;