* @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
*/
*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)
// 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;
}
{
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
{
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;
// 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
// mixo_ots_forced_clear_int(); // 强制拉高MOT脚
// int_mode = 1;
// }
+ if (stand_still == 0)
+ {
+ //上次是转动,上报状态改变
+ report_zero_data_for_start_stop_flag();
+ }
stand_still = 1;
}
}
*/
#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;
}
}
-#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");
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;