112 lines
3.0 KiB
C

#include "FunctionState.h"
#include "plib_port.h"
#include "plib_adc1.h"
#include "OsekCom.h"
extern uint16 adc[2] ;
uint8 Fuction_State = 1 ;
uint8 Control_SDZ = 1 ;
uint16 LD_AD_Val;
void FunctionState_Task(void)
{
static uint16 Into_A_count = 0;
static uint16 Into_B_count = 0;
static uint16 Into_C_count = 0;
static uint8_t adcResetFlag = 0;
adcResetFlag = !adcResetFlag;
if (adcResetFlag == 0)
{
ADC1_Initialize();
ADC1_Enable();
//ADC1_ChannelSelect(ADC_POSINPUT_AIN7, ADC_NEGINPUT_GND);
ADC1_ConversionStart();
return;
}
//InitMessage(SIG_SWTLSENSOR1_BASELINE, &adc[0]);
LD_AD_Val = adc[1];
switch(Fuction_State)
{
case Function_State_A:
Into_A_count = 0;
//if((adc[0]>649 && adc[0]<874) || (adc[0]>1777 && adc[0]<2003)) //A switch to B
if((adc[0]>581 && adc[0]<862) || (adc[0]>1788 && adc[0]<2014))
{
Into_B_count++;
if(Into_B_count >= 400) //4000ms
{
Fuction_State = Function_State_B;
}
}
else if(adc[0]<581 || adc[0]>2014) //A switch to C
{
Into_C_count++;
if(Into_C_count >= 100) //1000ms
{
Fuction_State = Function_State_C;
}
}
break;
case Function_State_B:
Into_B_count = 0;
if(adc[0]>897&&adc[0]<1754) //B switch to A
{
Into_A_count++;
if(Into_A_count >= 50) //500ms
{
Fuction_State = Function_State_A;
}
}
else if(adc[0]<581 || adc[0]>2014) //B switch to C
{
Into_C_count++;
if(Into_C_count >= 100) //1000ms
{
Fuction_State = Function_State_C;
}
}
break;
case Function_State_C:
Into_C_count = 0;
if((adc[0]>614 && adc[0]<897) || (adc[0]>1754 && adc[0]<1979)) //C switch to B
{
Into_B_count++;
if(Into_B_count >= 400) //4000ms
{
Fuction_State = Function_State_B;
}
}
//else if(adc[0]>931&&adc[0]<1721) //C switch to A
else if(adc[0]>897&&adc[0]<1754) //8.25->7.95 15.25->15.55
{
Into_A_count++;
if(Into_A_count >= 50) //500ms
{
Fuction_State = Function_State_A;
}
}
break;
default:
break;
}
}