You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
98 lines
2.9 KiB
98 lines
2.9 KiB
////////////////////////////////////////////////////////////////////////////
|
|
///@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;
|
|
//放在该task的第二步
|
|
if(R.LeaveForbid_flag == LeaveForbid_OPEN)
|
|
{ //触发报警 //取绝对值abs();
|
|
if( abs(R.weight.differ) > 50 ) //&& R.beep != beep_on R.weight.differ
|
|
{
|
|
L0_uart1_str("R.weight.differ:");
|
|
L0_uart1_ushex(abs(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("Enter1->");
|
|
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):
|
|
L0_uart1_str("Jump1Jump1Jump1->");
|
|
L0_uart1_0d0a();
|
|
//手动解除
|
|
// if(R.ForbidDelate_flag == 1)
|
|
// {
|
|
// R.beep = beep_on;
|
|
// R.beep_startime = 0;
|
|
// R.LeaveForbid_flag = LeaveForbid_OFF; 应在解除按键按下时,操作beep还和置位R.LeaveForbid_flag = LeaveForbid_OFF
|
|
// }
|
|
//超时解除 //放在该task的第一步
|
|
if(D_sys_now - R.beep_startime > D_COUNT_JIFFIES(5000)) //5000 5秒 30000 30秒
|
|
{
|
|
R.beep = beep_off;
|
|
L0_uart1_str("Jump1->");
|
|
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();
|
|
}
|
|
|
|
|
|
|
|
|
|
|