PASII/CandeII_1.4/Taskrun/detect_task.c

106 lines
2.7 KiB
C
Raw Normal View History

/*****************************************************************
;Project: Light
;MCU:
;Date:
;File:
;Function:
******************************************************************/
#include "detect_task.h"
#include "shockLed_task.h"
#include "chargeLed_task.h"
#include "tick.h"
#include "adc.h"
#include "TaskRun.h"
#include "config.h"
/*---------------------------------------------------------------*/
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TaskSwitch_t tTaskSwitch;
static TaskSwitch_t Last_tTaskSwitch = TaskSwitch_None; //<2F><>ʼ<EFBFBD><CABC>Ϊû<CEAA><C3BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD><D6B4>
static unsigned char TaskInitFlag = 1; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD>־λ
/*---------------------------------------------------------------*/
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
extern TaskFlagUnion_t tTaskFlag;
extern unsigned char VoltageStableFlag; //<2F><><EFBFBD>ص<EFBFBD>ѹ<EFBFBD>ȶ<EFBFBD><C8B6><EFBFBD>־
/*---------------------------------------------------------------*/
//<2F><><EFBFBD><EFBFBD>ӵ<EFBFBD>״̬ 1: <20><><EFBFBD><EFBFBD>״̬ 2<><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>״̬
static void DetectConnect_Task(void)
{
//--<2D><><EFBFBD><EFBFBD><EFBFBD>ڳ<EFBFBD><DAB3><EFBFBD>
if(tTaskFlag.tFlag.chargeFlag == 1)
{
tTaskSwitch= TaskSwitch_Charge;
}
else //--<2D><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD>
{
tTaskSwitch = TaskSwitch_shock;
}
}
/*---------------------------------------------------------------*/
//<2F><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
void Task_Switch(void)
{
static unsigned short timer_Task = 0;
static unsigned char Task_state = 0;
switch(Task_state)
{
case 0:
ADC_Sample(); //1: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD>ٷֱ<D9B7> 2: <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7>ڳ<EFBFBD><DAB3><EFBFBD>
DetectConnect_Task();
TimerSet(timer_Task, 20); //<2F><><EFBFBD><EFBFBD>20ms<6D><73>ʱ<EFBFBD><CAB1>ÿ20ms<6D><73><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>
if(VoltageStableFlag==1)
{
Task_state = 1;
}
break;
case 1:
if(TimerCheck(timer_Task,20))
{
if(tTaskSwitch != Last_tTaskSwitch ) //<2F>ж<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>һ<EFBFBD><D2BB>
{
tTaskFlag.TaskFlagValue &= 0x01; //<2F><><EFBFBD>ձ<EFBFBD>־λ
if(tTaskSwitch == TaskSwitch_shock)
{
TaskRunProcess = (*shockLed_Task);
tTaskFlag.tFlag.shockFlag = 1;
VoltageStableFlag = 0;
}
else
{
if(tTaskSwitch == TaskSwitch_Charge)
{
TaskRunProcess = (*chargeLed_Task);
tTaskFlag.tFlag.chargeFlag = 1;
}
}
Last_tTaskSwitch = tTaskSwitch;
Set_TaskInitFlag(1); //˵<><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>
}
Task_state = 0;
}
break;
default:
Task_state = 0;
break;
}
}
/*---------------------------------------------------------------*/
//--<2D><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>״̬
unsigned char Get_TaskInitFlag(void)
{
return TaskInitFlag;
}
/*---------------------------------------------------------------*/
//--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>״̬
void Set_TaskInitFlag(unsigned char Flag)
{
TaskInitFlag = Flag;
}
/*---------------------------------------------------------------*/