⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tap_interrupt.c

📁 mtk 3D动力传感器驱动源码
💻 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 + -