tap_interrupt.c

来自「mtk 3D动力传感器驱动源码」· C语言 代码 · 共 117 行

C
117
字号
/*********************************************************************

  (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 + =
减小字号Ctrl + -
显示快捷键?