--- fixed unstable first LED color ISSUE

This commit is contained in:
Yunhorn 2024-07-29 11:32:58 +08:00
parent 6dd59ad942
commit f9820dbfba
4 changed files with 15 additions and 38 deletions

View File

@ -48,8 +48,8 @@ enum sts_lamp_color {
STS_GREEN_DARK=0x10, //0b0001 0000 GREEN DARK STS_GREEN_DARK=0x10, //0b0001 0000 GREEN DARK
STS_RED_DARK=0x20, //0b0010 0000, STS_RED_DARK=0x20, //0b0010 0000,
STS_BLUE_DARK=0x30, //0b0011 0000 BLUE DARK STS_RED_BLUE=0x23, //0b0010 0011 RED BLUE FLASH
STS_RED_BLUE=0x23 //0b0010 0011 RED BLUE FLASH STS_BLUE_DARK=0x30 //0b0011 0000 BLUE DARK
}; };
enum sts_oo_work_mode { enum sts_oo_work_mode {

View File

@ -102,9 +102,9 @@ void STS_Lamp_Bar_Set_Dark(void)
void STS_WS2812B_Refresh(void) void STS_WS2812B_Refresh(void)
{ {
//__disable_irq(); //__disable_irq();
HAL_TIM_PWM_Start_DMA(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL, (uint32_t *)&rgb_buf, (WS2812B_DATA_LEN+1)); HAL_TIM_PWM_Start_DMA(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL, (uint32_t *)&rgb_buf, (WS2812B_DATA_LEN+24));
//__enable_irq(); //__enable_irq();
//HAL_TIM_PWM_Start_IT(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL); HAL_TIM_PWM_Start_IT(&STS_LAMP_BAR_HTIM, STS_LAMP_BAR_TIM_CHANNEL);
} }
void STS_Lamp_Bar_Init(void) void STS_Lamp_Bar_Init(void)
@ -159,8 +159,8 @@ void STS_Lamp_Bar_Set_RGB_Color(uint8_t red, uint8_t green, uint8_t blue )
uint8_t i =0; uint8_t i =0;
//HAL_Delay(1); //HAL_Delay(1);
//__disable_irq(); __disable_irq();
//UTIL_MEM_set_8((void*)rgb_buf.GRB,0x0,(WS2812B_DATA_LEN)); UTIL_MEM_set_8((void*)rgb_buf.GRB,0x0,(WS2812B_DATA_LEN+48));
//__enable_irq(); //__enable_irq();
for(i = 0; i < STS_LAMP_BAR_LED_NUM; i++) for(i = 0; i < STS_LAMP_BAR_LED_NUM; i++)
@ -178,7 +178,7 @@ void STS_Lamp_Bar_Set_RGB_Color(uint8_t red, uint8_t green, uint8_t blue )
//if (sts_service_mask == STS_SERVICE_MASK_L0) { //if (sts_service_mask == STS_SERVICE_MASK_L0) {
STS_WS2812B_Refresh(); STS_WS2812B_Refresh();
//} //}
__enable_irq();
} }
void STS_Lamp_Bar_Refresh(void) void STS_Lamp_Bar_Refresh(void)

View File

@ -605,7 +605,7 @@ void STS_Combined_Status_Processing(void)
{ {
sts_lamp_bar_color = sts_status_color; sts_lamp_bar_color = sts_status_color;
STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level); //STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, luminance_level);
last_lamp_bar_color = sts_lamp_bar_color; last_lamp_bar_color = sts_lamp_bar_color;
} }

View File

@ -612,7 +612,7 @@ void LoRaWAN_Init(void)
UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL); UTIL_TIMER_Create(&TxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnTxTimerLedEvent, NULL);
UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL); UTIL_TIMER_Create(&RxLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnRxTimerLedEvent, NULL);
UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnJoinTimerLedEvent, NULL); UTIL_TIMER_Create(&JoinLedTimer, LED_PERIOD_TIME, UTIL_TIMER_ONESHOT, OnJoinTimerLedEvent, NULL);
UTIL_TIMER_Create(&STSLampBarColorTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSLampBarColorTimerEvent, NULL); UTIL_TIMER_Create(&STSLampBarColorTimer, LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSLampBarColorTimerEvent, NULL);
UTIL_TIMER_Create(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL); UTIL_TIMER_Create(&STSDurationCheckTimer, 20*LED_PERIOD_TIME, UTIL_TIMER_PERIODIC, OnYunhornSTSDurationCheckTimerEvent, NULL);
@ -1156,6 +1156,7 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context)
//HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); /* STS GREEN */ //HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); /* STS GREEN */
//if ((sts_work_mode != STS_WIRED_MODE)) //if ((sts_work_mode != STS_WIRED_MODE))
uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x0f; uint8_t high4=(sts_lamp_bar_color>>4)&0x0f, low4=sts_lamp_bar_color&0x0f;
HAL_Delay(10);
if (high4==0) if (high4==0)
{ {
if (last_sts_lamp_bar_color != sts_lamp_bar_color) if (last_sts_lamp_bar_color != sts_lamp_bar_color)
@ -1170,48 +1171,24 @@ static void OnYunhornSTSLampBarColorTimerEvent(void *context)
} else { } else {
if (r_b) if (r_b)
{ {
__disable_irq(); //__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(high4, DEFAULT_LUMINANCE_LEVEL); STS_Lamp_Bar_Set_STS_RGB_Color(high4, DEFAULT_LUMINANCE_LEVEL);
__enable_irq(); //__enable_irq();
last_sts_lamp_bar_color = high4; last_sts_lamp_bar_color = high4;
//STS_WS2812B_Refresh(); //STS_WS2812B_Refresh();
} }
else { else {
__disable_irq(); //__disable_irq();
STS_Lamp_Bar_Set_STS_RGB_Color(low4, DEFAULT_LUMINANCE_LEVEL); STS_Lamp_Bar_Set_STS_RGB_Color(low4, DEFAULT_LUMINANCE_LEVEL);
__enable_irq(); //__enable_irq();
last_sts_lamp_bar_color = low4; last_sts_lamp_bar_color = low4;
//STS_WS2812B_Refresh(); //STS_WS2812B_Refresh();
} }
r_b = !r_b; r_b = !r_b;
} }
#if 0
if (sts_lamp_bar_color == STS_RED_BLUE) {
if (r_b)
STS_Lamp_Bar_Set_STS_RGB_Color(STS_RED, DEFAULT_LUMINANCE_LEVEL);
else
STS_Lamp_Bar_Set_STS_RGB_Color(STS_BLUE, DEFAULT_LUMINANCE_LEVEL);
r_b = !r_b; UTIL_TIMER_Start(&STSLampBarColorTimer);
} else if (sts_lamp_bar_color == STS_RED_DARK) {
if (r_b)
STS_Lamp_Bar_Set_STS_RGB_Color(STS_RED, DEFAULT_LUMINANCE_LEVEL);
else
STS_Lamp_Bar_Set_STS_RGB_Color(STS_DARK, DEFAULT_LUMINANCE_LEVEL);
r_b = !r_b;
}
else {
if (last_sts_lamp_bar_color != sts_lamp_bar_color)
{
STS_Lamp_Bar_Set_STS_RGB_Color(sts_lamp_bar_color, DEFAULT_LUMINANCE_LEVEL);
last_sts_lamp_bar_color = sts_lamp_bar_color;
}
}
}
#endif
} }