From 54c85194cd76c9a788f0db9676d6938326e1cd71 Mon Sep 17 00:00:00 2001 From: penglei <1624952103@qq.com> Date: Sat, 5 Jul 2025 16:15:08 +0800 Subject: [PATCH] =?utf8?q?=E4=BC=98=E5=8C=96W9=E5=85=89=E7=94=B5=E7=BC=96?= =?utf8?q?=E7=A0=81=E5=99=A8=E5=93=8D=E5=BA=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../rotary_encoder/mixo/mixo_ots_access.c | 8 +++-- .../rotary_encoder/mixo/mixo_ots_driver.c | 32 +++++++++++++++---- .../rotary_encoder/mixo/mixo_service.c | 6 ++-- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_access.c b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_access.c index 60782603f..58955adbf 100644 --- a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_access.c +++ b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_access.c @@ -2,7 +2,7 @@ * @Author: penglei 1624952103@qq.com * @Date: 2025-01-04 10:53:54 * @LastEditors: penglei 1624952103@qq.com - * @LastEditTime: 2025-01-04 16:38:46 + * @LastEditTime: 2025-07-05 15:32:27 * @FilePath: /sdk615/code/sdk/zhihui/drivers/rotary_encoder/mixo/src/mixo_ots_access.c * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%AE */ @@ -37,7 +37,8 @@ int mixo_ots_reg_read(uint8_t regAddr, uint8_t* regData) *regData = 0x00; // 清空数据 // printf("<-%02X,%02X,%02X\r\n",slave_addr,regAddr,*regData); // return mixo_gpio_i2c_write_read(slave_addr, ®Addr, 1, regData, 1); - return custom_i2c_read_regs(slave_addr, regAddr, 1, regData, 1,MIXO_OTS_I2C_BUS); + custom_i2c_read_regs(slave_addr, regAddr, 1, regData, 1,MIXO_OTS_I2C_BUS); + return 0; } int mixo_ots_reg_consecutive_read(uint8_t regStartAddr,int len,uint8_t* regData) @@ -57,6 +58,7 @@ int mixo_ots_reg_write(uint8_t regAddr, uint8_t regData) // uint8_t tmp[2] = {regAddr, regData}; // printf("->%02X,%02X,%02X\r\n",slave_addr,regAddr,regData); // return mixo_gpio_i2c_write_read(slave_addr, tmp, 2, NULL, 0); - return custom_i2c_write_reg(slave_addr, regAddr, 1, ®Data, 1,MIXO_OTS_I2C_BUS); + custom_i2c_write_reg(slave_addr, regAddr, 1, ®Data, 1,MIXO_OTS_I2C_BUS); + return 0; } diff --git a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_driver.c b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_driver.c index be7f6998f..844e511eb 100644 --- a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_driver.c +++ b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_ots_driver.c @@ -32,9 +32,9 @@ static void put_crown_result(int16_t x) { return; } - if(abs(x)>=16 ) + if(abs(x)>=8 ) { - ots_result += x/16; //大于4的值除以4, 代表角度, 单位0.5° + ots_result += x/8; //大于4的值除以4, 代表角度, 单位0.5° } else { @@ -52,12 +52,19 @@ static void put_crown_result(int16_t x) g_encoder_callback(); } +static void report_zero_data_for_start_stop_flag(void) +{ + ots_result = 0; + + if (g_encoder_callback != NULL) + g_encoder_callback(); +} void mixo_ots_timer_callback(void) { uint8_t mot_status = 0x00; mixo_ots_get_mot_status(&mot_status); - + // printf("mot_status:0x%x\n",mot_status); if ((mot_status & 0x80) == 0x80) { timer_cnt = 0; @@ -71,11 +78,19 @@ void mixo_ots_timer_callback(void) // printf("%ld,%d,%d,%d,%d\r\n", timestamp, raw_data.dx, raw_data.dy, mot_status, dx_sum); // PRINT("%d,%d,%d,%d\r\n",raw_data.dx, raw_data.dy, mot_status, dx_sum); - put_crown_result(raw_data.dx); + // ots_result = raw_data.dx; + + if (stand_still == 1) + { + //上次是静止,上报状态改变 + report_zero_data_for_start_stop_flag(); + } stand_still = 0; - if (g_encoder_callback != NULL) - g_encoder_callback(); + put_crown_result(raw_data.dx); + + // if (g_encoder_callback != NULL) + // g_encoder_callback(); } else @@ -92,6 +107,11 @@ void mixo_ots_timer_callback(void) // mixo_ots_forced_clear_int(); // 强制拉高MOT脚 // int_mode = 1; // } + if (stand_still == 0) + { + //上次是转动,上报状态改变 + report_zero_data_for_start_stop_flag(); + } stand_still = 1; } } diff --git a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_service.c b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_service.c index f9225cecc..7fa8cd746 100644 --- a/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_service.c +++ b/code/sdk/drivers/peripheral/rotary_encoder/mixo/mixo_service.c @@ -19,7 +19,7 @@ */ #define MIXO_SERVICE_CMD_TIMER_CHECK 0x11 -#define MIXO_SERVICE_TIMER_CHECK_MS 30 +#define MIXO_SERVICE_TIMER_CHECK_MS 20 static bool g_mixo_service_initialled = false; @@ -118,7 +118,7 @@ void create_mixo_queue(void) } } -#define MIXO_BOARD_TASK_SIZE 0x500 +#define MIXO_BOARD_TASK_SIZE 0x1000 errcode_t uapi_mixo_service_init(void) { PRINT("uapi_mixo_service_init !\r\n"); @@ -134,7 +134,7 @@ errcode_t uapi_mixo_service_init(void) app_task_definition_t taskcfg={0}; taskcfg.create_queue_handle = create_mixo_queue; taskcfg.attr.name="mixo_service"; - taskcfg.attr.priority = osPriorityBelowNormal4; + taskcfg.attr.priority = osPriorityNormal1; taskcfg.attr.stack_size = MIXO_BOARD_TASK_SIZE; taskcfg.func = mixo_service_check_task; taskcfg.use_mem = USE_EXTEND_MEM; -- 2.17.1