From 9d00b8daa180d67539f97c1d5a9bb27be4f1ac26 Mon Sep 17 00:00:00 2001 From: true Date: Sun, 4 Aug 2024 19:41:11 -0700 Subject: [PATCH] clear LED values before initializing matrix programs are rendered after LEDs are sent. this means the first update would be garbage. initialize the data so this is not the case. also fix bug with current scaling register fill function (doesn't affect this program). --- firmware/retro_tech_fw/user/src/31fl3729.c | 2 +- firmware/retro_tech_fw/user/src/led.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/firmware/retro_tech_fw/user/src/31fl3729.c b/firmware/retro_tech_fw/user/src/31fl3729.c index 099b52a..f4f492e 100644 --- a/firmware/retro_tech_fw/user/src/31fl3729.c +++ b/firmware/retro_tech_fw/user/src/31fl3729.c @@ -54,7 +54,7 @@ uint8_t is31fl3729_get_addr(uint8_t adpin) void is31fl3729_set_scaling_current_multi(uint8_t i2c_addr, const uint8_t *current, uint8_t count) { if (!count) return; - count &= 0xf; + if (count > 16) count = 16; i2c_write_addr1b(i2c_addr, FL3729_REG_SCALING, current, count); } diff --git a/firmware/retro_tech_fw/user/src/led.c b/firmware/retro_tech_fw/user/src/led.c index 615faf3..dbd60bb 100644 --- a/firmware/retro_tech_fw/user/src/led.c +++ b/firmware/retro_tech_fw/user/src/led.c @@ -47,6 +47,15 @@ void led_init() uint8_t i; uint8_t buf[FL3729_CS_OUTPUTS] = {0xff}; + // reset LEDs + for (i = 0; i < 9; i++) { + rgb[i][0] = 0; + rgb[i][1] = 0; + rgb[i][2] = 0; + } + cursor[0] = cursor[1] = cursor[2] = 0; + + // configure matrix is31fl3729_init(FL3729_ADDR, FL3729_CONF_SSD_NRML | FL3729_CONF_OSDE_OFF | FL3729_CONF_MATRIX_2x16, LED_INIT_CURRENT);