修复马达噪声,修复触摸BUG
This commit is contained in:
parent
c84832bdd1
commit
6ab6df5370
@ -1,9 +1,9 @@
|
|||||||
#
|
#
|
||||||
#Mon Aug 19 22:53:46 CST 2024
|
#Sat Aug 24 10:49:01 CST 2024
|
||||||
mcal.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=1eaf555a844840d91945cb14109201c3
|
mcal.com-microchip-mplab-nbide-toolchain-xc32-XC32LanguageToolchain.md5=1eaf555a844840d91945cb14109201c3
|
||||||
conf.ids=mcal
|
conf.ids=mcal
|
||||||
mcal.languagetoolchain.version=4.10
|
mcal.languagetoolchain.version=4.10
|
||||||
host.id=10k5-yicy-7x
|
host.id=124p-5vo2-40
|
||||||
configurations-xml=3c603a65e149702643d6cf2071da16f0
|
configurations-xml=3c603a65e149702643d6cf2071da16f0
|
||||||
mcal.Pack.dfplocation=E\:\\Program Files\\Microchip\\MPLABX\\v6.20\\packs\\Microchip\\SAME51_DFP\\3.7.242
|
mcal.Pack.dfplocation=E\:\\Program Files\\Microchip\\MPLABX\\v6.20\\packs\\Microchip\\SAME51_DFP\\3.7.242
|
||||||
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=f612087c95360c842296d189edfe3321
|
com-microchip-mplab-nbide-embedded-makeproject-MakeProject.md5=f612087c95360c842296d189edfe3321
|
||||||
|
@ -120,7 +120,7 @@ void speaker_Init(void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
para level 0~~3,other value force set to 3
|
para level 0~3,other value force set to 3
|
||||||
return void
|
return void
|
||||||
*/
|
*/
|
||||||
/*level ->0 ------ 1 ----------2 ---------3*/
|
/*level ->0 ------ 1 ----------2 ---------3*/
|
||||||
@ -129,7 +129,7 @@ return void
|
|||||||
void speaker_set_strenght(FA51024_ctrl_e_typ level)
|
void speaker_set_strenght(FA51024_ctrl_e_typ level)
|
||||||
{
|
{
|
||||||
|
|
||||||
//PORT_PinWrite(PORT_PIN_PA13,1);/*SHUTDOWN = 1~{o<t~}urn on chip*/
|
//PORT_PinWrite(PORT_PIN_PA13,1);/*SHUTDOWN = 1,turn on chip*/
|
||||||
|
|
||||||
if(level == SA51024_STRENGTH_LEVEL0)
|
if(level == SA51024_STRENGTH_LEVEL0)
|
||||||
{
|
{
|
||||||
@ -165,8 +165,10 @@ void speaker_MainTask(void)
|
|||||||
{
|
{
|
||||||
case SPEAKER_INIT:
|
case SPEAKER_INIT:
|
||||||
//SA51024_Set_State(SA51024_STOP,speaker_ctrl_buf_str.strenght);
|
//SA51024_Set_State(SA51024_STOP,speaker_ctrl_buf_str.strenght);
|
||||||
PORT_PinWrite(PORT_PIN_PA13,0);/*SHUTDOWN = 1~{o<t~}urn on chip*/
|
PORT_PinWrite(PORT_PIN_PA13,0);/*SHUTDOWN = 1,turn on chip*/
|
||||||
PORT_PinWrite(PORT_PIN_PA25,0);
|
PORT_PinWrite(PORT_PIN_PA25,0);
|
||||||
|
PORT_PinPeripheralFunctionConfig(PORT_PIN_PA02,PERIPHERAL_FUNCTION_B);
|
||||||
|
DAC_REGS->DAC_CTRLA |= DAC_CTRLA_ENABLE_Msk;
|
||||||
speaker_set_strenght(SA51024_STRENGTH_LEVEL0);
|
speaker_set_strenght(SA51024_STRENGTH_LEVEL0);
|
||||||
speaker_main_state_str = SPEAKER_INIT_CYCLE;
|
speaker_main_state_str = SPEAKER_INIT_CYCLE;
|
||||||
speaker_cycle_u16 = 0;
|
speaker_cycle_u16 = 0;
|
||||||
@ -179,7 +181,7 @@ void speaker_MainTask(void)
|
|||||||
|
|
||||||
if(speaker_cycle_u16++ >= ((SPEAKER_INTERVAL_CYCLE_TIMES)/(SPEAKER_TASK_PERIOD)))
|
if(speaker_cycle_u16++ >= ((SPEAKER_INTERVAL_CYCLE_TIMES)/(SPEAKER_TASK_PERIOD)))
|
||||||
{
|
{
|
||||||
DAC_REGS->DAC_CTRLA &= ~DAC_CTRLA_ENABLE_Msk;
|
//DAC_REGS->DAC_CTRLA &= ~DAC_CTRLA_ENABLE_Msk;
|
||||||
PORT_PinGPIOConfig(PORT_PIN_PA02);
|
PORT_PinGPIOConfig(PORT_PIN_PA02);
|
||||||
speaker_main_state_str = SPEAKER_IDLE;
|
speaker_main_state_str = SPEAKER_IDLE;
|
||||||
}
|
}
|
||||||
@ -212,9 +214,9 @@ void speaker_MainTask(void)
|
|||||||
|
|
||||||
case SPEAKER_START:
|
case SPEAKER_START:
|
||||||
{
|
{
|
||||||
PORT_PinPeripheralFunctionConfig(PORT_PIN_PA02,PERIPHERAL_FUNCTION_B);
|
|
||||||
PORT_PinWrite(PORT_PIN_PA25,0);
|
PORT_PinWrite(PORT_PIN_PA25,0);
|
||||||
DAC_REGS->DAC_CTRLA |= DAC_CTRLA_ENABLE_Msk;
|
|
||||||
SA51024_Set_State(SA51024_WORKING,speaker_ctrl_buf_str.strenght);
|
SA51024_Set_State(SA51024_WORKING,speaker_ctrl_buf_str.strenght);
|
||||||
speaker_cycle_u16 = 0;
|
speaker_cycle_u16 = 0;
|
||||||
speaker_main_state_str = SPEAKER_UPDATE_CYCLE;
|
speaker_main_state_str = SPEAKER_UPDATE_CYCLE;
|
||||||
@ -233,6 +235,7 @@ void speaker_MainTask(void)
|
|||||||
speaker_main_state_str = SPEAKER_STOP;
|
speaker_main_state_str = SPEAKER_STOP;
|
||||||
speaker_fault_status = 1;
|
speaker_fault_status = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
@ -246,8 +249,8 @@ void speaker_MainTask(void)
|
|||||||
speaker_cycle_u16 = 0;
|
speaker_cycle_u16 = 0;
|
||||||
|
|
||||||
/* Disable DAC */
|
/* Disable DAC */
|
||||||
// DAC_REGS->DAC_CTRLA &= ~~DAC_CTRLA_ENABLE_Msk;
|
// DAC_REGS->DAC_CTRLA &= ~DAC_CTRLA_ENABLE_Msk;
|
||||||
PORT_PinGPIOConfig(PORT_PIN_PA02);
|
//PORT_PinGPIOConfig(PORT_PIN_PA02);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@ -289,9 +292,9 @@ Speaker_main_e_typ Get_Speaker_Main_State(void)
|
|||||||
return speaker_main_state_str;
|
return speaker_main_state_str;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
uint8_t Get_Speaker_Fault(void)
|
uint8_t Get_Speaker_Fault(void)
|
||||||
{
|
{
|
||||||
return speaker_fault_status;
|
return speaker_fault_status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ extern void speaker_Init(void);
|
|||||||
extern void speaker_MainTask(void);
|
extern void speaker_MainTask(void);
|
||||||
extern STATE_UINT8 speeker_Tig_Once(uint16_t cycle_time,FA51024_ctrl_e_typ level);
|
extern STATE_UINT8 speeker_Tig_Once(uint16_t cycle_time,FA51024_ctrl_e_typ level);
|
||||||
extern Speaker_main_e_typ Get_Speaker_Main_State(void);
|
extern Speaker_main_e_typ Get_Speaker_Main_State(void);
|
||||||
|
extern uint8_t Get_Speaker_Fault(void);
|
||||||
/***************************extern function end************************************/
|
/***************************extern function end************************************/
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ static TouchButtons_type key_status[BTN_MAX_CH_NUM - 5U] = {0};
|
|||||||
static TouchSurface_type TouchSurface;
|
static TouchSurface_type TouchSurface;
|
||||||
static TouchScroller_type TouchScroller;
|
static TouchScroller_type TouchScroller;
|
||||||
static Buttons_SignalType Buttons_Signal[BTN_MAX_CH_NUM] = {BUTTON_RELEASE};
|
static Buttons_SignalType Buttons_Signal[BTN_MAX_CH_NUM] = {BUTTON_RELEASE};
|
||||||
static TouchSlideEvent_type TouchSlideEvent;
|
|
||||||
TouchSurface_Convert_type Surface_Convert;
|
TouchSurface_Convert_type Surface_Convert;
|
||||||
static PanelPress_LevelType TouchPanel_PressLevel = PANEL_PRESS_LEVEL0;
|
static PanelPress_LevelType TouchPanel_PressLevel = PANEL_PRESS_LEVEL0;
|
||||||
static float32 TouchPanel_PressNValue = 0.0f; // 0N
|
static float32 TouchPanel_PressNValue = 0.0f; // 0N
|
||||||
@ -419,7 +419,7 @@ void TouchPanel_init(void)
|
|||||||
uint8_t eedata[5];
|
uint8_t eedata[5];
|
||||||
LIB_Mem_MemSet(&TouchSurface, 0x00U, sizeof(TouchSurface_type));
|
LIB_Mem_MemSet(&TouchSurface, 0x00U, sizeof(TouchSurface_type));
|
||||||
LIB_Mem_MemSet(&TouchScroller, 0x00U, sizeof(TouchScroller_type));
|
LIB_Mem_MemSet(&TouchScroller, 0x00U, sizeof(TouchScroller_type));
|
||||||
LIB_Mem_MemSet(&TouchSlideEvent, 0x00U, sizeof(TouchSlideEvent_type));
|
|
||||||
LIB_Mem_MemSet(&Surface_Convert, 0x00U, sizeof(TouchSurface_Convert_type));
|
LIB_Mem_MemSet(&Surface_Convert, 0x00U, sizeof(TouchSurface_Convert_type));
|
||||||
SmartEE_Read(0x780, eedata, 3);
|
SmartEE_Read(0x780, eedata, 3);
|
||||||
if (eedata[0] < 4)
|
if (eedata[0] < 4)
|
||||||
@ -488,20 +488,12 @@ void GetScroller_Position(uint8 *x, uint8 *y)
|
|||||||
TP_SlideDirection_Enum TouchPanel_SlideEventRead(void)
|
TP_SlideDirection_Enum TouchPanel_SlideEventRead(void)
|
||||||
{
|
{
|
||||||
TP_SlideDirection_Enum Dir = TP_SlideDirection_NONE;
|
TP_SlideDirection_Enum Dir = TP_SlideDirection_NONE;
|
||||||
if (TouchSlideEvent.Event == TRUE)
|
|
||||||
{
|
|
||||||
Dir = TouchSlideEvent.Direction;
|
|
||||||
}
|
|
||||||
return Dir;
|
return Dir;
|
||||||
}
|
}
|
||||||
|
|
||||||
TP_SlideLevel_Enum TouchPanel_SlideUpDownLevelRead(void)
|
TP_SlideLevel_Enum TouchPanel_SlideUpDownLevelRead(void)
|
||||||
{
|
{
|
||||||
TP_SlideLevel_Enum SlideLevel = TP_SlideLevel_NONE;
|
TP_SlideLevel_Enum SlideLevel = TP_SlideLevel_NONE;
|
||||||
if (TouchSlideEvent.Event == TRUE)
|
|
||||||
{
|
|
||||||
SlideLevel = TouchSlideEvent.UpDown_SlideLevel;
|
|
||||||
}
|
|
||||||
return SlideLevel;
|
return SlideLevel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -525,7 +517,7 @@ PanelPress_LevelType TouchPanel_PressLevelRead(void)
|
|||||||
boolean TouchSurface_is_TouchActive(void)
|
boolean TouchSurface_is_TouchActive(void)
|
||||||
{
|
{
|
||||||
boolean ret = FALSE;
|
boolean ret = FALSE;
|
||||||
if (TouchPanel_SurfaceStatus & TOUCH_ACTIVE)
|
if (TouchPanel_SurfaceStatus & TOUCH_ACTIVE && CurrentPosition>0 && CurrentPosition<9)
|
||||||
{
|
{
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
}
|
}
|
||||||
@ -558,7 +550,7 @@ boolean TouchScroller_is_TouchActive(void)
|
|||||||
Buttons_SignalType TouchSurface_XY_StsRead(void)
|
Buttons_SignalType TouchSurface_XY_StsRead(void)
|
||||||
{
|
{
|
||||||
Buttons_SignalType XY_Sts = BUTTON_RELEASE;
|
Buttons_SignalType XY_Sts = BUTTON_RELEASE;
|
||||||
if (TouchPanel_SurfaceStatus & TOUCH_ACTIVE)
|
if (TouchPanel_SurfaceStatus & TOUCH_ACTIVE && CurrentPosition>0 && CurrentPosition<9)
|
||||||
{
|
{
|
||||||
|
|
||||||
switch (TouchPanel_PressLevel)
|
switch (TouchPanel_PressLevel)
|
||||||
@ -581,68 +573,6 @@ Buttons_SignalType TouchSurface_XY_StsRead(void)
|
|||||||
return XY_Sts;
|
return XY_Sts;
|
||||||
}
|
}
|
||||||
|
|
||||||
// kailong
|
|
||||||
|
|
||||||
#if 0
|
|
||||||
uint8 Vibra_PressCheck(void)
|
|
||||||
{
|
|
||||||
uint16 RawData = 0;
|
|
||||||
uint16 temp_RawData = 0;
|
|
||||||
static uint16 LastRawData = 0;
|
|
||||||
static PanelPress_LevelType Last_PressLevel = PANEL_PRESS_LEVEL0;
|
|
||||||
PanelPress_LevelType ret_Press = PANEL_PRESS_LEVEL0;
|
|
||||||
float32 FilterValue;
|
|
||||||
float32 PressNValueTable[3][2] = {
|
|
||||||
{1.5f, 3.0f},
|
|
||||||
{0.5f, 3.0f},
|
|
||||||
{1.0f, 1.8f}
|
|
||||||
};
|
|
||||||
|
|
||||||
if(Last_PressLevel > PANEL_PRESS_LEVEL2){ Last_PressLevel = PANEL_PRESS_LEVEL0;}
|
|
||||||
////if(TRUE == GET_TouchPanel_is_Press())
|
|
||||||
temp_RawData = (0xfff & Get_forcedetect_force_value());
|
|
||||||
if(SPEAKER_UPDATE_CYCLE == Get_Speaker_Main_State())
|
|
||||||
{
|
|
||||||
RawData = LastRawData;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(temp_RawData&0x800)//negative
|
|
||||||
{
|
|
||||||
RawData = 0x00;
|
|
||||||
}else{
|
|
||||||
RawData = temp_RawData;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(abs(RawData - LastRawData) > (10*0xF2))
|
|
||||||
{
|
|
||||||
RawData = LastRawData;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TouchPanel_PressRawData = RawData;
|
|
||||||
TouchPanel_PressNValue = ((float32)RawData / (float32)0xF2);
|
|
||||||
FilterValue = AlideAverage_Filter(1, TouchPanel_PressNValue);
|
|
||||||
if(FilterValue < PressNValueTable[Last_PressLevel][0]){//< 1N
|
|
||||||
ret_Press = PANEL_PRESS_LEVEL0;
|
|
||||||
//Vibra_force_level=PANEL_PRESS_LEVEL0;
|
|
||||||
}else if(FilterValue >= PressNValueTable[Last_PressLevel][0] &&
|
|
||||||
FilterValue < PressNValueTable[Last_PressLevel][1]){//1N~3N
|
|
||||||
ret_Press = PANEL_PRESS_LEVEL1;
|
|
||||||
//Vibra_force_level=PANEL_PRESS_LEVEL1;
|
|
||||||
}else{//>=3
|
|
||||||
ret_Press = PANEL_PRESS_LEVEL2;
|
|
||||||
//Vibra_force_level=PANEL_PRESS_LEVEL2;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LastRawData = RawData;
|
|
||||||
Last_PressLevel = ret_Press;
|
|
||||||
return ret_Press;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// kailong
|
// kailong
|
||||||
|
|
||||||
@ -1134,144 +1064,16 @@ static float32 GetSlide_Angle(float32 dx, float32 dy)
|
|||||||
/*************************************************************/
|
/*************************************************************/
|
||||||
static void CheckSlide_Level(TP_SlideDirection_Enum SlideDir, uint8 AbsX, uint8 AbsY)
|
static void CheckSlide_Level(TP_SlideDirection_Enum SlideDir, uint8 AbsX, uint8 AbsY)
|
||||||
{
|
{
|
||||||
switch (SlideDir)
|
|
||||||
{
|
|
||||||
case TP_SlideDirection_ShortUP:
|
|
||||||
case TP_SlideDirection_LongUP:
|
|
||||||
TouchSlideEvent.UpDown_SlideDistance = AbsY;
|
|
||||||
if (TouchSlideEvent.UpDown_SlideDistance > SLIDE_UD_LEVEL1_DISTANCE && TouchSlideEvent.UpDown_SlideDistance <= SLIDE_UD_LEVEL2_DISTANCE)
|
|
||||||
{
|
|
||||||
TouchSlideEvent.UpDown_SlideLevel = TP_SlideLevel1_UP;
|
|
||||||
}
|
|
||||||
else if (TouchSlideEvent.UpDown_SlideDistance > SLIDE_UD_LEVEL2_DISTANCE && TouchSlideEvent.UpDown_SlideDistance <= SLIDE_UD_LEVEL3_DISTANCE)
|
|
||||||
{
|
|
||||||
TouchSlideEvent.UpDown_SlideLevel = TP_SlideLevel2_UP;
|
|
||||||
}
|
|
||||||
else if (TouchSlideEvent.UpDown_SlideDistance > SLIDE_UD_LEVEL3_DISTANCE)
|
|
||||||
{
|
|
||||||
TouchSlideEvent.UpDown_SlideLevel = TP_SlideLevel3_UP;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TouchSlideEvent.UpDown_SlideLevel = TP_SlideLevel_NONE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TP_SlideDirection_ShortDOWN:
|
|
||||||
case TP_SlideDirection_LongDOWN:
|
|
||||||
TouchSlideEvent.UpDown_SlideDistance = AbsY;
|
|
||||||
if (TouchSlideEvent.UpDown_SlideDistance > SLIDE_UD_LEVEL1_DISTANCE && TouchSlideEvent.UpDown_SlideDistance <= SLIDE_UD_LEVEL2_DISTANCE)
|
|
||||||
{
|
|
||||||
TouchSlideEvent.UpDown_SlideLevel = TP_SlideLevel1_DOWN;
|
|
||||||
}
|
|
||||||
else if (TouchSlideEvent.UpDown_SlideDistance > SLIDE_UD_LEVEL2_DISTANCE && TouchSlideEvent.UpDown_SlideDistance <= SLIDE_UD_LEVEL3_DISTANCE)
|
|
||||||
{
|
|
||||||
TouchSlideEvent.UpDown_SlideLevel = TP_SlideLevel2_DOWN;
|
|
||||||
}
|
|
||||||
else if (TouchSlideEvent.UpDown_SlideDistance > SLIDE_UD_LEVEL3_DISTANCE)
|
|
||||||
{
|
|
||||||
TouchSlideEvent.UpDown_SlideLevel = TP_SlideLevel3_DOWN;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TouchSlideEvent.UpDown_SlideLevel = TP_SlideLevel_NONE;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
TouchSlideEvent.UpDown_SlideDistance = 0x00;
|
|
||||||
TouchSlideEvent.UpDown_SlideLevel = TP_SlideLevel_NONE;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
static TP_SlideDirection_Enum GetSlide_Direction(uint8 startX, uint8 startY, uint8 endX, uint8 endY)
|
static TP_SlideDirection_Enum GetSlide_Direction(uint8 startX, uint8 startY, uint8 endX, uint8 endY)
|
||||||
{
|
{
|
||||||
TP_SlideDirection_Enum result = TP_SlideDirection_NONE;
|
TP_SlideDirection_Enum result = TP_SlideDirection_NONE;
|
||||||
sint32 CoordMapping_sx, CoordMapping_sy;
|
|
||||||
sint32 CoordMapping_ex, CoordMapping_ey;
|
|
||||||
uint16 absx, absy;
|
|
||||||
sint32 dy, dx;
|
|
||||||
float32 angle;
|
|
||||||
|
|
||||||
CoordMapping_sx = (1u * (sint32)startX);
|
|
||||||
CoordMapping_sy = (-1u * (sint32)startY);
|
|
||||||
CoordMapping_ex = (1u * (sint32)endX);
|
|
||||||
CoordMapping_ey = (-1u * (sint32)(endY));
|
|
||||||
dx = CoordMapping_ex - CoordMapping_sx;
|
|
||||||
dy = CoordMapping_ey - CoordMapping_sy;
|
|
||||||
|
|
||||||
absx = abs(dx);
|
|
||||||
absy = abs(dy);
|
|
||||||
if (TouchSurface.Event == TOUCH_PANEL_MOVE_EVENT && (absx > SLIDE_LR_MIN_DISTANCE || absy > SLIDE_UD_MIN_DISTANCE))
|
|
||||||
{
|
|
||||||
/*Ignore small Slide*/
|
|
||||||
angle = GetSlide_Angle(dx, dy);
|
|
||||||
if (angle >= -45.0 && angle < 45.0)
|
|
||||||
{
|
|
||||||
if (absx > SLIDE_LR_SHORT_DISTANCE_NUM)
|
|
||||||
{
|
|
||||||
result = TP_SlideDirection_LongRIGHT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = TP_SlideDirection_ShortRIGHT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (angle >= 45.0 && angle < 135.0)
|
|
||||||
{
|
|
||||||
if (absy > SLIDE_UD_SHORT_DISTANCE_NUM)
|
|
||||||
{
|
|
||||||
result = TP_SlideDirection_LongUP;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = TP_SlideDirection_ShortUP;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (angle >= -135.0 && angle < -45.0)
|
|
||||||
{
|
|
||||||
if (absy > SLIDE_UD_SHORT_DISTANCE_NUM)
|
|
||||||
{
|
|
||||||
result = TP_SlideDirection_LongDOWN;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = TP_SlideDirection_ShortDOWN;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if ((angle >= 135.0 && angle <= 180.0) || (angle >= -180.0 && angle < -135.0))
|
|
||||||
{
|
|
||||||
if (absx > SLIDE_LR_SHORT_DISTANCE_NUM)
|
|
||||||
{
|
|
||||||
result = TP_SlideDirection_LongLEFT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
result = TP_SlideDirection_ShortLEFT;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
CheckSlide_Level(result, absx, absy);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if 0
|
|
||||||
uint8 KalmanFilter(uint8 inData, uint8 Dtype)
|
|
||||||
{
|
|
||||||
static float32 kalman[2] = {0};
|
|
||||||
static float32 p[2] = {10, 10};
|
|
||||||
float32 q = 0.001;
|
|
||||||
float32 r = 0.001;
|
|
||||||
float32 kg = 0;
|
|
||||||
if(Dtype < 2)
|
|
||||||
{
|
|
||||||
p[Dtype] += q;
|
|
||||||
kg = p[Dtype] / ( p[Dtype] + r );
|
|
||||||
kalman[Dtype] = kalman[Dtype] + (kg * (inData - kalman[Dtype]));
|
|
||||||
p[Dtype] = (1 - kg) * p[Dtype];
|
|
||||||
}
|
|
||||||
return (uint8)kalman[Dtype];
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct Point
|
struct Point
|
||||||
{
|
{
|
||||||
@ -1351,7 +1153,6 @@ void TouchPanel_MainFunction(void)
|
|||||||
{
|
{
|
||||||
uint8 index;
|
uint8 index;
|
||||||
uint8 x1, y1, x2, y2, Temp_x, Temp_y;
|
uint8 x1, y1, x2, y2, Temp_x, Temp_y;
|
||||||
uint8 touchEnd_flag = 0x00;
|
|
||||||
|
|
||||||
uint8 voice_temp, voice_x, voice_y; // by kailong
|
uint8 voice_temp, voice_x, voice_y; // by kailong
|
||||||
uint8 pad_trig_x, pad_trig_y;
|
uint8 pad_trig_x, pad_trig_y;
|
||||||
@ -1526,10 +1327,6 @@ void TouchPanel_MainFunction(void)
|
|||||||
|
|
||||||
TouchPanel_PressLevel = TouchPanel_PressCheck();
|
TouchPanel_PressLevel = TouchPanel_PressCheck();
|
||||||
|
|
||||||
// add by kailong
|
|
||||||
// static uint8 Voice_force_Reach2_flag = 0;
|
|
||||||
// static uint8 Vol_force_Reach2_flag = 0;
|
|
||||||
// static uint8 Menu_force_Reach2_flag = 0;
|
|
||||||
k_voice_touch_Sts = BUTTON_RELEASE;
|
k_voice_touch_Sts = BUTTON_RELEASE;
|
||||||
k_vol_touch_Sts = BUTTON_RELEASE;
|
k_vol_touch_Sts = BUTTON_RELEASE;
|
||||||
k_menu_touch_Sts = BUTTON_RELEASE;
|
k_menu_touch_Sts = BUTTON_RELEASE;
|
||||||
@ -1549,21 +1346,12 @@ void TouchPanel_MainFunction(void)
|
|||||||
switch (TouchPanel_PressLevel)
|
switch (TouchPanel_PressLevel)
|
||||||
{
|
{
|
||||||
case PANEL_PRESS_LEVEL0:
|
case PANEL_PRESS_LEVEL0:
|
||||||
// Voice_force_Reach2_flag = 0;
|
|
||||||
k_voice_touch_Sts = BUTTON_TOUCH;
|
k_voice_touch_Sts = BUTTON_TOUCH;
|
||||||
break;
|
break;
|
||||||
case PANEL_PRESS_LEVEL1:
|
case PANEL_PRESS_LEVEL1:
|
||||||
// if(Voice_force_Reach2_flag == 1)
|
|
||||||
// {
|
|
||||||
// k_voice_touch_Sts = BUTTON_TOUCH_AND_PRESS;
|
|
||||||
//}
|
|
||||||
// else
|
|
||||||
//{
|
|
||||||
k_voice_touch_Sts = BUTTON_TOUCH;
|
k_voice_touch_Sts = BUTTON_TOUCH;
|
||||||
//}
|
|
||||||
break;
|
break;
|
||||||
case PANEL_PRESS_LEVEL2:
|
case PANEL_PRESS_LEVEL2:
|
||||||
// Voice_force_Reach2_flag = 1;
|
|
||||||
k_voice_touch_Sts = BUTTON_TOUCH_AND_PRESS;
|
k_voice_touch_Sts = BUTTON_TOUCH_AND_PRESS;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -1576,21 +1364,12 @@ void TouchPanel_MainFunction(void)
|
|||||||
switch (TouchPanel_PressLevel)
|
switch (TouchPanel_PressLevel)
|
||||||
{
|
{
|
||||||
case PANEL_PRESS_LEVEL0:
|
case PANEL_PRESS_LEVEL0:
|
||||||
// Vol_force_Reach2_flag = 0;
|
|
||||||
k_vol_touch_Sts = BUTTON_TOUCH;
|
k_vol_touch_Sts = BUTTON_TOUCH;
|
||||||
break;
|
break;
|
||||||
case PANEL_PRESS_LEVEL1:
|
case PANEL_PRESS_LEVEL1:
|
||||||
// if(Vol_force_Reach2_flag == 1)
|
|
||||||
//{
|
|
||||||
// k_vol_touch_Sts = BUTTON_TOUCH_AND_PRESS;
|
|
||||||
// }
|
|
||||||
// else
|
|
||||||
//{
|
|
||||||
k_vol_touch_Sts = BUTTON_TOUCH;
|
k_vol_touch_Sts = BUTTON_TOUCH;
|
||||||
//}
|
|
||||||
break;
|
break;
|
||||||
case PANEL_PRESS_LEVEL2:
|
case PANEL_PRESS_LEVEL2:
|
||||||
// Vol_force_Reach2_flag = 1;
|
|
||||||
k_vol_touch_Sts = BUTTON_TOUCH_AND_PRESS;
|
k_vol_touch_Sts = BUTTON_TOUCH_AND_PRESS;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -1603,21 +1382,12 @@ void TouchPanel_MainFunction(void)
|
|||||||
switch (TouchPanel_PressLevel)
|
switch (TouchPanel_PressLevel)
|
||||||
{
|
{
|
||||||
case PANEL_PRESS_LEVEL0:
|
case PANEL_PRESS_LEVEL0:
|
||||||
// Menu_force_Reach2_flag = 0;
|
|
||||||
k_menu_touch_Sts = BUTTON_TOUCH;
|
k_menu_touch_Sts = BUTTON_TOUCH;
|
||||||
break;
|
break;
|
||||||
case PANEL_PRESS_LEVEL1:
|
case PANEL_PRESS_LEVEL1:
|
||||||
// if(Menu_force_Reach2_flag == 1)
|
|
||||||
// {
|
|
||||||
// k_menu_touch_Sts = BUTTON_TOUCH_AND_PRESS;
|
|
||||||
//}
|
|
||||||
// else
|
|
||||||
// {
|
|
||||||
k_menu_touch_Sts = BUTTON_TOUCH;
|
k_menu_touch_Sts = BUTTON_TOUCH;
|
||||||
// }
|
|
||||||
break;
|
break;
|
||||||
case PANEL_PRESS_LEVEL2:
|
case PANEL_PRESS_LEVEL2:
|
||||||
// Menu_force_Reach2_flag = 1;
|
|
||||||
k_menu_touch_Sts = BUTTON_TOUCH_AND_PRESS;
|
k_menu_touch_Sts = BUTTON_TOUCH_AND_PRESS;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@ -1651,114 +1421,15 @@ void TouchPanel_MainFunction(void)
|
|||||||
Temp_x = get_surface_position(HOR_POS);
|
Temp_x = get_surface_position(HOR_POS);
|
||||||
Temp_y = get_surface_position(VER_POS);
|
Temp_y = get_surface_position(VER_POS);
|
||||||
TouchPanel_XY_Convert(Temp_x, Temp_y);
|
TouchPanel_XY_Convert(Temp_x, Temp_y);
|
||||||
TouchSurface.x_position = Surface_Convert.convert_x;
|
|
||||||
TouchSurface.y_position = Surface_Convert.convert_y;
|
|
||||||
|
|
||||||
if (TouchSurface.end_x_pos == 0x00 && TouchSurface.end_y_pos == 0x00)
|
|
||||||
{
|
|
||||||
TouchSurface.end_x_pos = TouchSurface.x_position;
|
|
||||||
TouchSurface.end_y_pos = TouchSurface.y_position;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
|
||||||
if (TouchSurface.Event == TOUCH_PANEL_NONE_EVENT)
|
|
||||||
{
|
|
||||||
x1 = TouchSurface.end_x_pos;
|
|
||||||
y1 = TouchSurface.end_y_pos;
|
|
||||||
x2 = TouchSurface.x_position;
|
|
||||||
y2 = TouchSurface.y_position;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
x1 = TouchSurface.origin_x_pos;
|
|
||||||
y1 = TouchSurface.origin_y_pos;
|
|
||||||
x2 = TouchSurface.x_position;
|
|
||||||
y2 = TouchSurface.y_position;
|
|
||||||
}
|
|
||||||
|
|
||||||
TouchSurface.CheckCycle++;
|
|
||||||
TouchSurface.TouchCycle++;
|
|
||||||
if ((abs(x2 - x1) < TP_ERR_RANGE) && (abs(y2 - y1) < TP_ERR_RANGE))
|
|
||||||
{
|
|
||||||
// sampling error <= +- TP_ERR_RANGE
|
|
||||||
if (TouchSurface.CheckCycle >= TP_DEBOUNCE_CYCLE)
|
|
||||||
{
|
|
||||||
if (TOUCH_PANEL_NONE_EVENT == TouchSurface.Event)
|
|
||||||
{
|
|
||||||
TouchSurface.origin_x_pos = (x1 + x2) / 2;
|
|
||||||
TouchSurface.origin_y_pos = (y1 + y2) / 2;
|
|
||||||
TouchSurface.Event = TOUCH_PANEL_PRESS_EVENT;
|
|
||||||
}
|
|
||||||
TouchSurface.CheckCycle = TP_DEBOUNCE_CYCLE;
|
|
||||||
}
|
|
||||||
TouchSurface.end_x_pos = x2;
|
|
||||||
TouchSurface.end_y_pos = y2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (TOUCH_PANEL_PRESS_EVENT == TouchSurface.Event || TOUCH_PANEL_MOVE_EVENT == TouchSurface.Event)
|
|
||||||
{
|
|
||||||
TouchSurface.Event = TOUCH_PANEL_MOVE_EVENT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TouchSurface.Event = TOUCH_PANEL_NONE_EVENT;
|
|
||||||
TouchSurface.origin_x_pos = 0x00;
|
|
||||||
TouchSurface.origin_y_pos = 0x00;
|
|
||||||
}
|
|
||||||
TouchSurface.end_x_pos = x2;
|
|
||||||
TouchSurface.end_y_pos = y2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
x1 = TouchSurface.origin_x_pos;
|
|
||||||
y1 = TouchSurface.origin_y_pos;
|
|
||||||
x2 = TouchSurface.end_x_pos;
|
|
||||||
y2 = TouchSurface.end_y_pos;
|
|
||||||
if (TOUCH_PANEL_MOVE_EVENT == TouchSurface.Event)
|
|
||||||
{
|
|
||||||
if ((abs(x2 - x1) < TP_ERR_RANGE) && (abs(y2 - y1) < TP_ERR_RANGE))
|
|
||||||
{
|
|
||||||
TouchSurface.Event = TOUCH_PANEL_RES_EVENT;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TouchSurface.Event = TOUCH_PANEL_MOVE_EVENT;
|
|
||||||
TouchSlideEvent.Direction = GetSlide_Direction(x1, y1, x2, y2);
|
|
||||||
if (TouchSlideEvent.Direction != TP_SlideDirection_NONE)
|
|
||||||
{
|
|
||||||
TouchSlideEvent.keep_cycle = SLIDE_CAN_EVENT_KEEP_CYCLE;
|
|
||||||
TouchSlideEvent.Event = TRUE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (TOUCH_PANEL_PRESS_EVENT == TouchSurface.Event)
|
|
||||||
{
|
|
||||||
// do nothing
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
TouchSurface.Event = TOUCH_PANEL_NONE_EVENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
TouchSurface.end_x_pos = 0x00;
|
|
||||||
TouchSurface.end_y_pos = 0x00;
|
|
||||||
TouchSurface.CheckCycle = 0x00;
|
|
||||||
TouchSurface.origin_x_pos = 0x00;
|
|
||||||
TouchSurface.origin_y_pos = 0x00;
|
|
||||||
TouchSurface.x_position = 0;
|
|
||||||
TouchSurface.y_position = 0;
|
|
||||||
TouchSurface.TouchCycle = 0;
|
|
||||||
Surface_Convert.convert_x = 0x00;
|
Surface_Convert.convert_x = 0x00;
|
||||||
Surface_Convert.convert_y = 0x00;
|
Surface_Convert.convert_y = 0x00;
|
||||||
touchEnd_flag = 0x01;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TouchSurface.TouchCycle >= TP_RUNNING_ERROR_CYCLE)
|
|
||||||
{
|
|
||||||
TouchSurface.TouchCycle = TP_RUNNING_ERROR_CYCLE;
|
|
||||||
TouchSurface.Event = TOUCH_PANEL_BERR_EVENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (CurrentPosition)
|
switch (CurrentPosition)
|
||||||
{
|
{
|
||||||
@ -2013,31 +1684,13 @@ void TouchPanel_MainFunction(void)
|
|||||||
CurrentPosition = 0xff;
|
CurrentPosition = 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (touchEnd_flag != 0x00)
|
|
||||||
{
|
|
||||||
TouchSurface.Event = TOUCH_PANEL_NONE_EVENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
measurement_done_touch = 0;
|
measurement_done_touch = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (TouchSlideEvent.Event == TRUE)
|
|
||||||
{
|
|
||||||
if (TouchSlideEvent.keep_cycle != 0x00)
|
|
||||||
{
|
|
||||||
TouchSlideEvent.keep_cycle--;
|
|
||||||
}
|
|
||||||
if (TouchSlideEvent.keep_cycle == 0x00)
|
|
||||||
{
|
|
||||||
TouchSlideEvent.Direction = TP_SlideDirection_NONE;
|
|
||||||
TouchSlideEvent.UpDown_SlideLevel = TP_SlideLevel_NONE;
|
|
||||||
TouchSlideEvent.Event = FALSE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (TouchSurface.Event == TOUCH_PANEL_BERR_EVENT)
|
|
||||||
{
|
|
||||||
TouchSurface.Event = TOUCH_PANEL_NONE_EVENT;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Vibra_force_level == 2 && last_Vibra_force_level != 2 &&
|
if (Vibra_force_level == 2 && last_Vibra_force_level != 2 &&
|
||||||
Allow_Touch_flag == 1)
|
Allow_Touch_flag == 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user