From 8f833808edf1573dc60d419bf84ae8df2703bb72 Mon Sep 17 00:00:00 2001 From: whowechina Date: Sat, 16 Sep 2023 11:53:15 +0800 Subject: [PATCH] Overclock for best latency (still stable) --- Production/Firmware/chu_pico.uf2 | Bin 82944 -> 83968 bytes firmware/src/air.c | 22 +++++++++++----------- firmware/src/board_defs.h | 13 +++++-------- firmware/src/i2c_hub.h | 8 ++++---- firmware/src/main.c | 12 ++++++------ firmware/src/slider.c | 22 +++++++++++----------- 6 files changed, 37 insertions(+), 40 deletions(-) diff --git a/Production/Firmware/chu_pico.uf2 b/Production/Firmware/chu_pico.uf2 index 946b787d59d0d94cf212e49f6556ea92d4ec327d..9d21a50614254afeea5332d5778fa8bb323393ea 100644 GIT binary patch delta 11569 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 DFi5y0 diff --git a/firmware/src/air.c b/firmware/src/air.c index b8403f8..731a60f 100644 --- a/firmware/src/air.c +++ b/firmware/src/air.c @@ -27,19 +27,19 @@ const int pitch = 160; void air_init() { - i2c_init(TOF_I2C, 400 * 1000); - gpio_set_function(TOF_SDA, GPIO_FUNC_I2C); - gpio_set_function(TOF_SCL, GPIO_FUNC_I2C); - gpio_pull_up(TOF_SDA); - gpio_pull_up(TOF_SCL); + i2c_init(I2C_PORT, I2C_FREQ); + gpio_set_function(I2C_SDA, GPIO_FUNC_I2C); + gpio_set_function(I2C_SCL, GPIO_FUNC_I2C); + gpio_pull_up(I2C_SDA); + gpio_pull_up(I2C_SCL); i2c_hub_init(); for (int i = 0; i < sizeof(TOF_LIST); i++) { - i2c_select(TOF_I2C, 1 << TOF_LIST[i]); - gp2y0e_write(TOF_I2C, 0xa8, 0); // Accumulation 0:1, 1:5, 2:30, 3:10 - gp2y0e_write(TOF_I2C, 0x3f, 0x30); // Filter 0x00:7, 0x10:5, 0x20:9, 0x30:1 - gp2y0e_write(TOF_I2C, 0x13, 5); // Pulse [3..7]:[40, 80, 160, 240, 320] us + i2c_select(I2C_PORT, 1 << TOF_LIST[i]); + gp2y0e_write(I2C_PORT, 0xa8, 0); // Accumulation 0:1, 1:5, 2:30, 3:10 + gp2y0e_write(I2C_PORT, 0x3f, 0x30); // Filter 0x00:7, 0x10:5, 0x20:9, 0x30:1 + gp2y0e_write(I2C_PORT, 0x13, 5); // Pulse [3..7]:[40, 80, 160, 240, 320] us } } @@ -92,8 +92,8 @@ unsigned air_value(uint8_t index) void air_update() { for (int i = 0; i < sizeof(TOF_LIST); i++) { - i2c_select(TOF_I2C, 1 << TOF_LIST[i]); - distances[i] = gp2y0e_dist16(TOF_I2C); + i2c_select(I2C_PORT, 1 << TOF_LIST[i]); + distances[i] = gp2y0e_dist16(I2C_PORT); } } diff --git a/firmware/src/board_defs.h b/firmware/src/board_defs.h index 256720f..6734aac 100644 --- a/firmware/src/board_defs.h +++ b/firmware/src/board_defs.h @@ -5,15 +5,12 @@ #if defined BOARD_CHU_PICO -#define MPR121_I2C i2c0 -#define MPR121_SDA 16 -#define MPR121_SCL 17 +#define I2C_PORT i2c0 +#define I2C_SDA 16 +#define I2C_SCL 17 +#define I2C_FREQ 733*1000 -// if TOF_I2C is same as MPR121_I2C, TOF_SCL and TOF_SDA will be ignored -#define TOF_I2C i2c0 -#define TOF_SDA 16 -#define TOF_SCL 17 -#define TOF_I2C_HUB 19 +#define I2C_HUB_EN 19 #define TOF_MUX_LIST { 1, 2, 0, 4, 5 } diff --git a/firmware/src/i2c_hub.h b/firmware/src/i2c_hub.h index a01eaaf..d89eb07 100644 --- a/firmware/src/i2c_hub.h +++ b/firmware/src/i2c_hub.h @@ -13,10 +13,10 @@ #define I2C_HUB_ADDR 0x70 static inline void i2c_hub_init() { - // pull up gpio TOF_I2C_HUB - gpio_init(TOF_I2C_HUB); - gpio_set_dir(TOF_I2C_HUB, GPIO_OUT); - gpio_put(TOF_I2C_HUB, 1); + // pull up gpio I2C_HUB_EN + gpio_init(I2C_HUB_EN); + gpio_set_dir(I2C_HUB_EN, GPIO_OUT); + gpio_put(I2C_HUB_EN, 1); } static inline void i2c_select(i2c_inst_t *i2c_port, uint8_t chn) diff --git a/firmware/src/main.c b/firmware/src/main.c index d85ea54..e7d7e62 100644 --- a/firmware/src/main.c +++ b/firmware/src/main.c @@ -177,8 +177,12 @@ static void run_lights() static void core1_loop() { while (1) { + run_lights(); rgb_update(); + + slider_update_baseline(); fps_count(1); + print_fps(); sleep_ms(1); } } @@ -186,11 +190,7 @@ static void core1_loop() static void core0_loop() { while(1) { - run_lights(); fps_count(0); - print_fps(); - - slider_update_baseline(); slider_update(); air_update(); @@ -204,8 +204,8 @@ static void core0_loop() void init() { - sleep_ms(200); -// set_sys_clock_khz(166000, true); + sleep_ms(100); + set_sys_clock_khz(150000, true); board_init(); tusb_init(); stdio_init_all(); diff --git a/firmware/src/slider.c b/firmware/src/slider.c index d93a9df..bec4539 100644 --- a/firmware/src/slider.c +++ b/firmware/src/slider.c @@ -36,8 +36,8 @@ static struct mpr121_sensor mpr121[3]; static void mpr121_read_many(uint8_t addr, uint8_t reg, uint8_t *buf, size_t n) { - i2c_write_blocking_until(MPR121_I2C, addr, ®, 1, true, time_us_64() + 2000); - i2c_read_blocking_until(MPR121_I2C, addr, buf, n, false, time_us_64() + 2000); + i2c_write_blocking_until(I2C_PORT, addr, ®, 1, true, time_us_64() + 2000); + i2c_read_blocking_until(I2C_PORT, addr, buf, n, false, time_us_64() + 2000); } static void mpr121_read_many16(uint8_t addr, uint8_t reg, uint16_t *buf, size_t n) @@ -63,14 +63,14 @@ static void init_baseline() void slider_init() { - i2c_init(MPR121_I2C, 400 * 1000); - gpio_set_function(MPR121_SDA, GPIO_FUNC_I2C); - gpio_set_function(MPR121_SCL, GPIO_FUNC_I2C); - gpio_pull_up(MPR121_SDA); - gpio_pull_up(MPR121_SCL); + i2c_init(I2C_PORT, I2C_FREQ); + gpio_set_function(I2C_SDA, GPIO_FUNC_I2C); + gpio_set_function(I2C_SCL, GPIO_FUNC_I2C); + gpio_pull_up(I2C_SDA); + gpio_pull_up(I2C_SCL); for (int m = 0; m < 3; m++) { - mpr121_init(MPR121_I2C, MPR121_ADDR + m, mpr121 + m); + mpr121_init(I2C_PORT, MPR121_ADDR + m, mpr121 + m); } init_baseline(); @@ -82,9 +82,9 @@ void slider_update() mpr121_read_many16(MPR121_ADDR, reg, readout, 12); mpr121_read_many16(MPR121_ADDR + 1, reg, readout + 12, 12); mpr121_read_many16(MPR121_ADDR + 2, reg, readout + 24, 12); - mpr121_touched(touch, mpr121); - mpr121_touched(touch + 1, mpr121 + 1); - mpr121_touched(touch + 2, mpr121 + 2); +// mpr121_touched(touch, mpr121); +// mpr121_touched(touch + 1, mpr121 + 1); +// mpr121_touched(touch + 2, mpr121 + 2); } void slider_update_baseline()