//////////////////////////////////////////////////////////////////////////// ///@copyright Copyright (c) 2018, 传控科技 All rights reserved. ///------------------------------------------------------------------------- /// @file bsp_drv.c /// @brief bsp @ driver config ///------------------------------------------------------------------------- /// @version 1.0 /// @author CC /// @date 20180331 /// @note cc_AS_stc02 ////////////////////////////////////////////////////////////////////////////// /******************* 1.重量计算--上电清零后的曲线 2.重量校准--使用标准重量更新预设AD值 3.清零--两组曲线 (1)出厂曲线--预设AD值构成的曲线 (2)上电清零后的曲线--根据当前曲线与预设的曲线的差值去调整预设曲线后得到的曲线 *******************/ #include "app_weight.h" #include "app_config.h" #include "app_weightzero.h" ////#include "common.h" TS_TASK_weight_zero tst_weight_zero; void L3_task_weight_zero_init(void) { //显示任务初始化 L1_task_init(&tst_weight_zero.task); L3_task_s_go(tst_weight_zero,D_task_init); } #define D_task_weight_zero 16 #define D_task_WEIGHT_ZERO 15 #define D_task_WEIGHT_CAL 10 #define D_task_WEIGHT_get 2 void L3_task_weight_zero_handler(TS_TASK_weight_zero *s) { TTSS_Task_init(): printf("\r\n weight_zero\r\n"); L2_task_go_Tdelay(D_task_WEIGHT_get,300);//延时等待重量稳定 TTSS_Task_step(D_task_WEIGHT_get): s->zero_weight = D_get_weight(); //获取当前重量 /// R.total_zweight = s->zero_weight - tst_weight.ws[0].kg; //当前差值 = 当前重量 - 预设0点重量 L2_task_go(D_task_weight_zero); TTSS_Task_step(D_task_weight_zero): ///if(R.total_zweight <= R.p.zero_weight) //当前差值在规定范围之内 if(0) { L2_task_go(D_task_WEIGHT_CAL); } else { L2_task_go(D_task_WEIGHT_ZERO); } TTSS_Task_step(D_task_WEIGHT_CAL)://计算差值更新曲线 printf("\r\n weight_zero\r\n"); /// s->weight_dval = tst_weight.adc32 - tst_weight.ws[0].adc; //AD差值 tst_weight.ws[0].kg = 0; tst_weight.ws[0].adc = tst_weight.adc32; //0点AD值=当前AD值 if(s->weight_dval >= 0) //曲线上移 { tst_weight.ws[1].adc += s->weight_dval; //20KG tst_weight.ws[2].adc += s->weight_dval; //72KG } else //曲线下移 { tst_weight.ws[1].adc -= s->weight_dval; tst_weight.ws[2].adc -= s->weight_dval; } L2_task_go(D_task_WEIGHT_ZERO); TTSS_Task_step(D_task_WEIGHT_ZERO): //手动清零 /// if(R.zero != 0) //外部消息 { // R.zero = 0; // st_weight.ws[0].kg = s->zero_weight; //预设重量 = 当前重量 } L2_task_go(D_task_WEIGHT_ZERO); TTSS_Task_end(); }