diff --git a/Production/Firmware/chu_pico.uf2 b/Production/Firmware/chu_pico.uf2 index f2b9d1f..27fe65b 100644 Binary files a/Production/Firmware/chu_pico.uf2 and b/Production/Firmware/chu_pico.uf2 differ diff --git a/firmware/src/mpr121.c b/firmware/src/mpr121.c index a9aadee..b3e4ab7 100644 --- a/firmware/src/mpr121.c +++ b/firmware/src/mpr121.c @@ -5,6 +5,8 @@ */ #include +#include + #include "hardware/i2c.h" #include "mpr121.h" @@ -66,7 +68,7 @@ static void write_reg(uint8_t addr, uint8_t reg, uint8_t val) static uint8_t read_reg(uint8_t addr, uint8_t reg) { - uint8_t value; + uint8_t value = 0; i2c_write_blocking_until(I2C_PORT, addr, ®, 1, true, time_us_64() + IO_TIMEOUT_US); i2c_read_blocking_until(I2C_PORT, addr, &value, 1, false, @@ -147,6 +149,8 @@ static void mpr121_read_many(uint8_t addr, uint8_t reg, uint8_t *buf, int num) static void mpr121_read_many16(uint8_t addr, uint8_t reg, uint16_t *buf, int num) { uint8_t vals[num * 2]; + memset(vals, 0, sizeof(vals)); + mpr121_read_many(addr, reg, vals, num * 2); for (int i = 0; i < num; i++) { buf[i] = (vals[i * 2 + 1] << 8) | vals[i * 2]; @@ -155,7 +159,7 @@ static void mpr121_read_many16(uint8_t addr, uint8_t reg, uint16_t *buf, int num uint16_t mpr121_touched(uint8_t addr) { - uint16_t touched; + uint16_t touched = 0; mpr121_read_many16(addr, MPR121_TOUCH_STATUS_REG, &touched, 1); return touched; }