From ae5cafbd67b46048a5f05b81044cf0159eb63da3 Mon Sep 17 00:00:00 2001 From: StefansE Date: Fri, 3 Apr 2026 19:31:04 +0200 Subject: [PATCH] Initilizing with NV values not working - mixed colours --- Core/Src/main.c | 5 +++-- Core/Src/myComms.c | 18 ++++++++++++++++++ Core/Src/ws2812_effect.c | 10 +++++++++- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Core/Src/main.c b/Core/Src/main.c index 6d225ae..45616d4 100644 --- a/Core/Src/main.c +++ b/Core/Src/main.c @@ -123,14 +123,15 @@ int main(void) MX_USB_DEVICE_Init(); /* USER CODE BEGIN 2 */ - HAL_TIM_Base_Start(&htim2); - ws_Effect_InitModule(); // RTC config clock_InitModule(); // ds1307_config(0, 10, 19, THURSDAY, 26, MARCH, 2026, +1, 33); + ws_Effect_InitModule(); + + HAL_TIM_Base_Start(&htim2); /* USER CODE END 2 */ diff --git a/Core/Src/myComms.c b/Core/Src/myComms.c index 65a6e61..2eb24f2 100644 --- a/Core/Src/myComms.c +++ b/Core/Src/myComms.c @@ -76,6 +76,24 @@ static void cmd_writeNV(uint32_t data){ status = ds1307_write_user_RAM(UART_RxBuf[1], &UART_RxBuf[2], 3); + + switch(UART_RxBuf[1]){ + case NV_COLOUR_HOURS_ADDR: + clock_setColourHours(UART_RxBuf[2], UART_RxBuf[3], UART_RxBuf[4]); + break; + case NV_COLOUR_MINUTES_ADDR: + clock_setColourMinutes(UART_RxBuf[2], UART_RxBuf[3], UART_RxBuf[4]); + break; + case NV_COLOUR_SECONDS_ADDR: + clock_setColourSeconds(UART_RxBuf[2], UART_RxBuf[3], UART_RxBuf[4]); + break; + case NV_COLOUR_BACKGND_ADDR: + clock_setColourBackground(UART_RxBuf[2], UART_RxBuf[3], UART_RxBuf[4]); + break; + default: + break; + } + if(HAL_OK == status){ CDC_Transmit_FS(ok, sizeof(ok)); } diff --git a/Core/Src/ws2812_effect.c b/Core/Src/ws2812_effect.c index 612bae0..8a1728d 100644 --- a/Core/Src/ws2812_effect.c +++ b/Core/Src/ws2812_effect.c @@ -37,21 +37,29 @@ void ws_effect_setDisplayColoursNV(void){ colour_hours.g = rxBuf[1]; colour_hours.b = rxBuf[2]; + HAL_Delay(5); + ds1307_read_user_RAM(NV_COLOUR_MINUTES_ADDR, rxBuf, 3); colour_minutes.r = rxBuf[0]; colour_minutes.g = rxBuf[1]; colour_minutes.b = rxBuf[2]; + HAL_Delay(5); + ds1307_read_user_RAM(NV_COLOUR_SECONDS_ADDR, rxBuf, 3); colour_seconds.r = rxBuf[0]; colour_seconds.g = rxBuf[1]; colour_seconds.b = rxBuf[2]; + HAL_Delay(5); + ds1307_read_user_RAM(NV_COLOUR_BACKGND_ADDR, rxBuf, 3); colour_background.r = rxBuf[0]; colour_background.g = rxBuf[1]; colour_background.b = rxBuf[2]; + HAL_Delay(5); + } void clock_setColourHours(uint8_t r, uint8_t g, uint8_t b){ @@ -74,7 +82,7 @@ void clock_setColourSeconds(uint8_t r, uint8_t g, uint8_t b){ void ws_Effect_InitModule(void){ - + //ws_effect_setDisplayColoursNV(); ws2812_Init(); }