📄 tap_interrupt.c
字号:
/*********************************************************************
(c) copyright Freescale Semiconductor Ltd. 2008
ALL RIGHTS RESERVED
********************************************************************
Ver 0 Initial release
********************************************************************/
#include "kal_release.h"
#include "custom_config.h"
#include "gpio_sw.h" //Hardware IO interface
#include "kal_trace.h"
#ifdef G_SENSOR_SUPPORT
#include "tap_interrupt.h"
#include "eint.h"
#define MMA7455L_ClearInterrupt mma745x_IICWrite(INTRST, 0x03);\
mma745x_IICWrite(INTRST, 0x00); // Clear interrupt flags
VUINT8 TapInterruptStep;
VUINT8 TapInterruptRprt;
VUINT16 TapInterruptDelay;
void Tap_Interrupt_Time(void)
{
switch(TapInterruptStep)
{
case(1):
if((++TapInterruptDelay)>TapDelay1_Over) TapInterruptStep = 0; //Time over, master can get back to standby now
break;
case(2):
if((++TapInterruptDelay)>TapDelay2_Over) TapInterruptStep = 0; //Time over, master can get back to standby now
break;
default:
break;
}
}
void Tap_Clear_Interrupt(void)
{
MMA7455L_ClearInterrupt;
}
VUINT8 Tap_Interrupt_Svr(void)
{
if(!TapIntFlag) return 0;
MMA7455L_ClearInterrupt;
TapInterruptRprt = 0;
switch(TapInterruptStep)
{
case(1):
if(TapInterruptDelay<=TapDelay1) TapInterruptDelay = 0;
else
{
TapInterruptRprt = 1;
TapInterruptStep = 2;
TapInterruptDelay = 0;
}
break;
case(2):
TapInterruptDelay = 0;
break;
default:
TapInterruptStep = 1;
TapInterruptDelay = 0;
break;
}
return TapInterruptRprt;
}
void Tap_Interrupt_Init(void)
{
TapInterruptStep = 0;
TapInterruptDelay = 0;
}
/*
kal_bool accelerometer_state_2 = LEVEL_HIGH;//LEVEL_LOW;
VUINT8 vt_int_count = 0;
void g_sensor_eint_hisr(void)
{
kal_uint32 savedMask;
savedMask = SaveAndSetIRQMask();
vt_int_count++;
if(vt_int_count>=10)
vt_int_count = 0;
MMA7455L_ClearInterrupt;
RestoreIRQMask(savedMask);
}
*/
/*
VUINT8 Tap_get_INT_count(void)
{
//return vt_int_count;
return 0xff;
}
*/
/*
void Tap_Register_EINT(void)
{
extern kal_int32 EINT_SW_Debounce_Modify(kal_uint8 eintno, kal_uint8 debounce_time);
EINT_SW_Debounce_Modify(G_SENSOR_NO, 10);
EINT_Mask(G_SENSOR_NO);
EINT_Registration(G_SENSOR_NO, KAL_TRUE,
accelerometer_state_2,g_sensor_eint_hisr, KAL_TRUE);
}
*/
#endif /* G_SENSOR_SUPPORT */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -