fix(vd960Loop): 灵敏度阈值改用可配置灵敏度表 g_loop_sens_list

固定表 SensTable/SensTable_1 替换为 flash 可配置的
g_loop_sens_list.sens[loop_SensLevel].sens_in/sens_out
(进入/平坦性/离开三处 dlt_ORG 计算同步修改)
- 修复灵敏度值固定不可配置的问题
- 默认值由 set_factory_param 保持 {216,108,36,10}/{108,72,18,9}
This commit is contained in:
wangfq
2026-08-25 11:44:24 +08:00
parent 8151d5700e
commit fad99a550b
@@ -6,6 +6,7 @@
#include "task.h" #include "task.h"
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "storage.h"
/*=========================================================================== /*===========================================================================
* 灵敏度表 — 对齐 DLD154V4B / M1H * 灵敏度表 — 对齐 DLD154V4B / M1H
@@ -472,7 +473,7 @@ void vd1_task_per_channel(Loop154_Unit *unit)
* 无车状态 * 无车状态
*================================================================*/ *================================================================*/
unit->loop_dlt_ORG = ((uint32_t)unit->loop_Origin * SensTable[unit->loop_SensLevel]) >> 16; unit->loop_dlt_ORG = ((uint32_t)unit->loop_Origin * g_loop_sens_list.sens[unit->loop_SensLevel].sens_in) >> 16;
{ {
int32_t dev = (int32_t)unit->loop_CAPVD - (int32_t)unit->loop_Origin; int32_t dev = (int32_t)unit->loop_CAPVD - (int32_t)unit->loop_Origin;
if (dev < (int32_t)(unit->loop_dlt_ORG * 4)) { if (dev < (int32_t)(unit->loop_dlt_ORG * 4)) {
@@ -590,7 +591,7 @@ void vd1_task_per_channel(Loop154_Unit *unit)
} else { } else {
int32_t dev = (int32_t)unit->loop_CAPVD - (int32_t)unit->loop_Origin; int32_t dev = (int32_t)unit->loop_CAPVD - (int32_t)unit->loop_Origin;
int32_t cond1 = (dev >= 0) ? dev : -dev; int32_t cond1 = (dev >= 0) ? dev : -dev;
unit->loop_dlt_ORG = ((uint32_t)unit->loop_Origin * SensTable_1[unit->loop_SensLevel]) >> 16; unit->loop_dlt_ORG = ((uint32_t)unit->loop_Origin * g_loop_sens_list.sens[unit->loop_SensLevel].sens_out) >> 16;
if (cond1 < (int32_t)unit->loop_dlt_ORG && abs_fd < (int32_t)unit->delta2 if (cond1 < (int32_t)unit->loop_dlt_ORG && abs_fd < (int32_t)unit->delta2
&& abs_sd < (int32_t)unit->delta3) { && abs_sd < (int32_t)unit->delta3) {
unit->flat_ok_cnt++; unit->flat_ok_cnt++;
@@ -624,7 +625,7 @@ void vd1_task_per_channel(Loop154_Unit *unit)
/*================================================================ /*================================================================
* 有车状态 — cnt_release 防抖离开 * 有车状态 — cnt_release 防抖离开
*================================================================*/ *================================================================*/
unit->loop_dlt_ORG = ((uint32_t)unit->loop_Origin * SensTable_1[unit->loop_SensLevel]) >> 16; unit->loop_dlt_ORG = ((uint32_t)unit->loop_Origin * g_loop_sens_list.sens[unit->loop_SensLevel].sens_out) >> 16;
if ((unit->loop_Origin - unit->loop_dlt_ORG) < unit->loop_CAPVD) { if ((unit->loop_Origin - unit->loop_dlt_ORG) < unit->loop_CAPVD) {
unit->loop_cnt_release++; unit->loop_cnt_release++;