106 lines
2.7 KiB
C
106 lines
2.7 KiB
C
|
/*****************************************************************
|
|||
|
;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;
|
|||
|
}
|
|||
|
/*---------------------------------------------------------------*/
|