V0.08 解决任务执行次数异常的bug,原因是每次执行任务未更新任务结构体指针

此bug在V2.06版本被引入
解决 EW_Test_ReadUID 函数数组越界的问题
添加 总线翻转任务 JQ_Test_Toggle
This commit is contained in:
ranchuan
2023-12-13 18:28:38 +08:00
parent aeb0e4c206
commit 3909bc13a2
15 changed files with 147 additions and 102 deletions

View File

@@ -856,8 +856,8 @@ uint8_t DMod_FireBusReadDatasV2_RC(uint8_t* buf, uint8_t len, uint32_t time_out)
EW_DIFF_MOD_H;
Power_SetSampleCurrentRange(range);
if(ret){
DBG_LOG("cur_idle=%d,high_value=%d,idle_line=%d.",fire_dat.cur_idle, fire_dat.cur_high_value,fire_dat.cur_idle_line);
DBG_LOG("cur_max=%d,cur_idle_ad=%d",fire_dat.cur_max,fire_dat.cur_idle_ad);
// DBG_LOG("cur_idle=%d,high_value=%d,idle_line=%d.",fire_dat.cur_idle, fire_dat.cur_high_value,fire_dat.cur_idle_line);
// DBG_LOG("cur_max=%d,cur_idle_ad=%d",fire_dat.cur_max,fire_dat.cur_idle_ad);
}
return ret;
}

View File

@@ -440,6 +440,7 @@ int elec_check_load_task_param(uint8_t task_index)
}
// 装载参数
s->task_par=task_par;
memcpy(&checker_runcfg.task_info,task_par,sizeof(CheckerTask_Info_st));
checker_runcfg.param_count = checker_runcfg.task_info.param_rtv_count & 0x0F;
checker_runcfg.rtv_count = (checker_runcfg.task_info.param_rtv_count >> 4) & 0x0F;
@@ -509,6 +510,7 @@ void elec_exe_task(void)
if(s->task_fun==0){
return;
}
DBG_LOG("start task_index:%d",s->task_index);
for(int i=0;i<1+s->task_par->retry_time;i++)
{
checker_runcfg.excue_rtv=1;

View File

@@ -28,7 +28,7 @@ typedef struct{
task_node *head;
task_node *current;
int err_num;
uint8_t err_table[ERR_TABLE_SIZE]
uint8_t err_table[ERR_TABLE_SIZE];
}task_slot_def;
@@ -114,7 +114,7 @@ int task_slot_add_err(void *context,uint8_t err)
if(index<0) index=i;
}
if(t->err_table[i]==err){
return;
return 0;
}
}
if(index>=0){

View File

@@ -133,13 +133,14 @@ void CheckerExt_Slot(void)
int index;
uint16_t ret=0;
int self_index=checker_runcfg.task_info.runindex;
task_def *t=0;
void *task_slot=0;
if(checker_runcfg.param_count<1){
ret=1;
goto end;
}
index=checker_runcfg.params[0];
task_def *t=0;
void *task_slot=task_slot_init();
task_slot=task_slot_init();
if(task_slot==0){
goto end;
}

View File

@@ -80,7 +80,7 @@ void EW_Test_SetBusV(void)
/*
@brief 测量总线基本电压
@rtv1 返回总线电流 单位0.01uA
@rtv1 返回总线电流 单位0.1uA
*/
void EW_Test_BaseCur(void)
{
@@ -128,7 +128,7 @@ void EW_Test_ReadUID(void)
{
uint8_t uc_rtv = 0;
uint8_t uc_count = 0;
uint16_t aus_temp[12];
uint16_t aus_temp[14];
uint32_t ul_temp = 0;
memset(EW_RunBuf,0,EW_CHECKER_RUN_BUF);
if(checker_runcfg.params[0] == 0)
@@ -175,7 +175,7 @@ void EW_Test_ReadUID(void)
uc_count = (checker_runcfg.params[0]+7+1)/2;
}
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
memcpy(aus_temp+4,EW_RunBuf,24);
memcpy(aus_temp+4,EW_RunBuf,16);
Checker_SetRtv(aus_temp,checker_runcfg.rtv_count);
}
/*

View File

@@ -62,7 +62,7 @@ void JQ_Test_SetBusV(void)
}
/*
@brief 测量总线基本电压
@rtv1 返回总线电流 单位0.01uA
@rtv1 返回总线电流 单位0.1uA
*/
void JQ_Test_BaseCur(void)
{
@@ -1195,6 +1195,29 @@ void JQ_Test_VerifyDelay(void)
end:
Checker_MaskResult(uc_rtv,checker_runcfg.task_info.runindex);
}
/*
@brief 切换总线极性
@par0 从一个极性切换到另一个极性的间隔
@par1 从正极性切换到负极性为一个循环,循环的次数
@rtv1 返回最后一次总线电流 单位0.1uA
*/
void JQ_Test_Toggle(void)
{
uint16_t ul_cur[2];
uint16_t interval_ms = checker_runcfg.params[0];
uint16_t times = checker_runcfg.params[1];
for(int i=0;i<times;i++)
{
JQBUS_W_1
delay_ms(interval_ms);
JQBUS_W_0
delay_ms(interval_ms);
}
JQBUS_W_1
delay_ms(20);
Checker_MaskResult(0,checker_runcfg.task_info.runindex);
Checker_SetRtv(ul_cur,checker_runcfg.rtv_count);
}
CheckerTask jqtaskArray[CHECKER_MAXID_COUNT] ={
@@ -1236,6 +1259,7 @@ JQ_Test_ReadVersion ,//34 读取版本号
JQ_Test_WriteFacBuff ,//35 写缓存数据
JQ_Test_VerifyFacBuff ,//36 验证缓存数据
JQ_Test_VerifyDelay ,//37 读取延时值和otp数据相比
JQ_Test_Toggle ,//38 切换总线极性
(void*)0 //数组结束
};