//////////////////////////////////////////////////////////////////////////// ///@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 ////////////////////////////////////////////////////////////////////////////// #include "task_bedalarm.h" #include "app_config.h" #include "../msp/uart/msp_uart1.h" #include "../bsp/TTSSbsp/bsp_config.h" S_TASK_Bed_ALARM _s_task_bed_alarm; //============================================= void L3_task_bed_alarm_init(void) { L1_task_init(&_s_task_bed_alarm.task); L3_task_s_go(_s_task_bed_alarm,D_task_init); } #define D_task_ALARM_JUDGE 0x50 #define D_task_ALARM_DELETE 0x51 void L3_task_bed_alarm_handler(S_TASK_Bed_ALARM *s) { TTSS_Task_init(): L2_task_go(D_task_ALARM_JUDGE); //判定是否开启离床报警 // if(R.LeaveForbid_flag == LeaveForbid_OPEN) // { // R.weight.last = R.weight.kgx10_out * 10; //////应该在 按键按下时,就置标志位R.LeaveForbid_flag == LeaveForbid_OPEN和获取参考点位的重量。 // L2_task_go_Tdelay(D_task_WEIGHT_READ_AGAIN, D_Tdelay_100ms); // } //判定是否触发报警 TTSS_Task_step(D_task_ALARM_JUDGE): R.weight.differ = R.Weight_Ref - R.weight.kgx10_out; if(R.LeaveForbid_flag == LeaveForbid_OPEN) { //触发报警 //取绝对值abs(); if( R.weight.differ > 50 ) //&& R.beep != beep_on R.weight.differ { L0_uart1_str("R.weight.differ:"); L0_uart1_ushex(R.weight.differ); L0_uart1_0d0a(); L0_uart1_str("R.Weight_Ref:"); L0_uart1_ushex(R.Weight_Ref); L0_uart1_0d0a(); R.beep = beep_on; // D_LED1_ON(); L0_uart1_str("Enter Alarm->"); L0_uart1_0d0a(); R.beep_startime = D_sys_now; L2_task_go_Tdelay(D_task_ALARM_DELETE, D_Tdelay_200ms); } //未触发报警 } else L2_task_go_Tdelay(D_task_ALARM_JUDGE, D_Tdelay_200ms); //判定是否解除报警 TTSS_Task_step(D_task_ALARM_DELETE): //超时解除 if(D_sys_now - R.beep_startime > D_COUNT_JIFFIES(30000)) //5000 5秒 30000 30秒 { R.beep = beep_off; L0_uart1_str("Overtime!! Jump Alarm ->"); L0_uart1_0d0a(); // D_LED1_OFF(); R.beep_startime = 0; R.LeaveForbid_flag = LeaveForbid_OFF; L2_task_go_Tdelay(D_task_ALARM_JUDGE, D_Tdelay_200ms); } else if(R.LeaveForbid_flag == LeaveForbid_OFF) { R.beep = beep_off; L0_uart1_str("Manually dismiss!! Jump Alarm->"); L0_uart1_0d0a(); // D_LED1_OFF(); R.beep_startime = 0; // R.LeaveForbid_flag = LeaveForbid_OFF; L2_task_go_Tdelay(D_task_ALARM_JUDGE, D_Tdelay_200ms); } else L2_task_go_Tdelay(D_task_ALARM_DELETE, D_Tdelay_200ms); TTSS_Task_end(); }