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

📄 common_defs.h

📁 基于MMA7260QR2的跌落检查程序
💻 H
字号:
/************************************************************************************
* Accelerometer common definitions 
*
* Author(s):  $B03847
*
* (c) Copyright 2008, Freescale, Inc.  All rights reserved.
*
* No part of this document must be reproduced in any form - including copied,
* transcribed, printed or by any electronic means - without specific written
* permission from Freescale.
*
* Last Inspected: 05/16/2008
* Last Tested: 
************************************************************************************/

#ifndef __COMMON_DEFS_H__
#define __COMMON_DEFS_H__

#include "../../PLM/LibInterface/Crm.h"
#include "../../PLM/LibInterface/Interrupt.h"
#include "../../PLM/LibInterface/Timer.h"
#include "../../SMAC/Interface/GlobalDefs.h"
#include "../../SMAC/Interface/TransceiverConfigMngmnt.h"
#include "../../SMAC/Interface/TransceiverPowerMngmnt.h"
#include "../../SMAC/Interface/WirelessLinkMngmt.h"
#include "../../SMAC/Interface/SecurityMngmnt.h"
#include "../../SMAC/Configure/options_config.h"
#include "../../SMAC/Configure/security_config.h"
#include "../../SMAC/Drivers/Interface/Delay.h"
#include "../../SMAC/Drivers/Interface/MacaInterrupt.h"
#include "../../SMAC/Drivers/Interface/ghdr/maca.h"
#include "../../SMAC/Drivers/Configure/board_config.h"
#include "../../PLM/LibInterface/Platform.h"
#include "../../PLM/LibInterface/UartLowLevel.h"
#include "../../PLM/LibInterface/GPIO_Interface.h"
#include "../../PLM/LibInterface/ADC_Interface.h"
#include "../../PLM/LibInterface/NVM.h"
#include "../../PLM/LibInterface/ITC_Interface.h"
#include "../../PLM/Interface/PlatformInit.h"
#include "../../PLM/Interface/RF_Config.h"
#include "../Utilities/UartUtil.h"
#include "../Utilities/Leds.h"
#include "../Utilities/Keyboard.h"
#include "../Utilities/Display.h"
#include "../Utilities/Sound.h"

/* State variables are in the lower nibble 0-15 */
#define INITIAL_STATE        (0)
#define IDLE_STATE 	     (1)
#define RECEIVER_ALWAYS_ON   (2)
#define PC_RADIO_STATE 	     (3)
#define XYZ_STATE 	     (4)
#define FREEFALL_STATE 	     (5)
#define SHOCK_STATE 	     (6)
#define ANTITHEFT_STATE      (7)
#define BATTERYSAVE_STATE    (8)
#define LAST_STATE 	     (9)
#define SEND_PING_ACK_STATE (10)

/* doMeasurement parameters */
#define X_AXIS (1)
#define Y_AXIS (2)
#define Z_AXIS (4)

#if TARGET_BOARD == MC1322XSRB
  #define ACCEL_GSLEEP     (gGpioPin8_c)
  #define ACCEL_GSELECT1   (gGpioPin9_c)
  #define ACCEL_GSELECT2   (gGpioPin10_c)
  #define ACCEL_ENABLED    (TRUE)
  #define Accel_X          (gAdcChan2_c) 
  #define Accel_Y          (gAdcChan3_c) 
  #define Accel_Z          (gAdcChan4_c )
#endif

#if TARGET_BOARD == MC1322XUSERDEF
/* User defined boards shall declare these defines */
/*
  #define ACCEL_GSLEEP      
  #define ACCEL_GSELECT1    
  #define ACCEL_GSELECT2   
  #define ACCEL_ENABLED    
  #define Accel_X      
  #define Accel_Y      
  #define Accel_Z     
*/
#endif
 

#if TARGET_BOARD == MC1322XUSERDEF
 #ifndef ACCEL_GSLEEP
  #warning "ACCEL_GSLEEP GPIO is undefined"
 #endif
 #ifndef ACCEL_GSELECT1
  #warning "ACCEL_GSELECT1 GPIO is undefined"
 #endif
 #ifndef ACCEL_GSELECT2
  #warning "ACCEL_GSELECT2 GPIO is undefined"
 #endif
 #ifndef ACCEL_ENABLED
  #warning "ACCEL_ENABLED  is undefined"
 #endif
 #ifndef Accel_X
  #warning "Accel_X ADC GPIO is undefined"
 #endif
 #ifndef Accel_Y
  #warning "Accel_Y ADC GPIO is undefined"
 #endif
 #ifndef Accel_Z
  #warning "Accel_Z ADC GPIO is undefined"
 #endif
#endif

/* Threshold by App */
#define APP_DEFAULT_THRESHOLD      (5)
#define APP_BATTERYSAVER_THRESHOLD (5)
#define APP_SHOCKDETECT_THRESHOLD (60)
#define APP_ANTITHEFT_THRESHOLD   (30)

#if CLK_FREQ == F24MHZ
  #define DELAY_SIZE (0x1770)
#else
  #define DELAY_SIZE (0x2EE0)
#endif

#if TARGET_BOARD == MC1322XNCB
  #define ACCEL_ENABLED   (FALSE)
#endif

#if TARGET_BOARD == MC1322XUSB
  #define ACCEL_ENABLED   (FALSE)
#endif

#if gBuzzerSupported_d
  #define BUZZER_ON()   Buzzer=TRUE                        
  #define BUZZER_OFF()  Buzzer=FALSE
#else
  #define BUZZER_ON()   do{}while(FALSE)
  #define BUZZER_OFF()  do{}while(FALSE)
#endif

void SetupBuzzer(void);
void NVMSetup(void);
void AdcGpioInit(void);
void ADC_Setup(void);
void Timer_Setup(TmrNumber_t tNumber, TmrCallbackFunction_t pCallbackFunc, uint16_t comp_value);

void SetLeds(uint8_t gi8App, uint16_t gi16LedsDelay);
/************************************************************************************
*************************************************************************************
* Private macros
*************************************************************************************
************************************************************************************/
#define SetCalibrationValues() \
  do{ \
    sCalValues.NxOff = sCalDefaultValues->NxOff; \
    sCalValues.NxMax = sCalDefaultValues->NxMax; \
    sCalValues.NyOff = sCalDefaultValues->NyOff; \
    sCalValues.NyMax = sCalDefaultValues->NyMax; \
    sCalValues.NzOff = sCalDefaultValues->NzOff; \
    sCalValues.NzMax = sCalDefaultValues->NzMax; \
  }while(FALSE)

#define CalculateNewCalibrationValues() \
  do{ \
      for (i = 0; i < 8; i++) { \
        doAccelMeasurementNoCompensation(X_AXIS); \
        X += (uint16_t) doAccelMeasurementBuffer[1]; \
        doAccelMeasurementNoCompensation(Y_AXIS); \
        Y += (uint16_t) doAccelMeasurementBuffer[1]; \
        doAccelMeasurementNoCompensation(Z_AXIS); \
        Z += (uint16_t) doAccelMeasurementBuffer[1]; \
        DelayMs(10); \
      } \
      X >>= 3; \
      Y >>= 3; \
      Z >>= 3; \
  }while(FALSE)

#define SetNewCalibrationValues() \
  do{ \
    sCalValues.NxMax = (uint8_t) Z; \
    sCalValues.NyMax = (uint8_t) Z; \
    sCalValues.NzMax = (uint8_t) Z; \
    sCalValues.NxOff = (uint8_t) X; \
    sCalValues.NyOff = (uint8_t) Y; \
    sCalValues.NzOff = (uint8_t)((uint16_t)(Z - 189) + 128); \
    sCalValues.FlashCounter = 1; \
  }while(FALSE)

#define TRANSMIT_END() ((MSG_TX_ACTION_COMPLETE_SUCCESS == TX_msg.u8Status.msg_state) || \
  (MSG_TX_ACTION_COMPLETE_FAIL == TX_msg.u8Status.msg_state) || \
  (MSG_TX_ACTION_COMPLETE_CHANN_BUSY == TX_msg.u8Status.msg_state) || \
  (MSG_TX_ABORTED == TX_msg.u8Status.msg_state))

#define RECEIVE_END() ((MSG_RX_ACTION_COMPLETE_SUCCESS == RX_msg.u8Status.msg_state) || \
  (MSG_RX_ACTION_COMPLETE_FAIL == RX_msg.u8Status.msg_state) || \
  (MSG_RX_TIMEOUT_FAIL == RX_msg.u8Status.msg_state)) && \
  (FALSE == gbDataIndicationFlag)

#define BuildPingPacket() \
  do{ \
      TX_msg.pu8Buffer->u8Data[0] = 'P'; \
      TX_msg.pu8Buffer->u8Data[1] = gi8AppStatus; \
      TX_msg.pu8Buffer->u8Data[2] = options; \
      TX_msg.pu8Buffer->u8Data[3] = (uint8_t)(gu16msTimer >> 8); \
      TX_msg.pu8Buffer->u8Data[4] = (uint8_t) gu16msTimer; \
      TX_msg.pu8Buffer->u8Data[5] = sCalValues.NxOff; \
      TX_msg.pu8Buffer->u8Data[6] = sCalValues.NxMax; \
      TX_msg.pu8Buffer->u8Data[7] = sCalValues.NyOff; \
      TX_msg.pu8Buffer->u8Data[8] = sCalValues.NyMax; \
      TX_msg.pu8Buffer->u8Data[9] = sCalValues.NzOff; \
      TX_msg.pu8Buffer->u8Data[10] = sCalValues.NzMax; \
      TX_msg.u8BufSize = 11; \
      (void)MCPSDataRequest(&TX_msg); \
  }while(FALSE)

#define BuildEventPacket() \
  do{ \
      TX_msg.pu8Buffer->u8Data[0] = gi8AppStatus; \
      TX_msg.pu8Buffer->u8Data[1] = options; \
      TX_msg.u8BufSize = 2; \
      (void)MCPSDataRequest(&TX_msg); \
  }while(FALSE)

#define BuildTriaxDataRequest() \
  do{ \
      TX_msg.pu8Buffer->u8Data[0] = doAccelMeasurementBuffer[0]; \
      TX_msg.pu8Buffer->u8Data[1] = doAccelMeasurementBuffer[1]; \
      TX_msg.u8BufSize = 2; \
      (void)MCPSDataRequest(&TX_msg); \
      LED_ToggleLed(LED1); \
  }while(FALSE)


#define AccelStart_X()   Adc_StartManualConv(gAdcPrimary_c, Accel_X)
#define AccelStart_Y()   Adc_StartManualConv(gAdcPrimary_c, Accel_Y)
#define AccelStart_Z()   Adc_StartManualConv(gAdcPrimary_c, Accel_Z)


#define X_VALUE_CHANGE() compareADCReading(u8LastX, doAccelMeasurementBuffer[1], APP_DEFAULT_THRESHOLD) == TRUE
#define Y_VALUE_CHANGE() compareADCReading(u8LastY, doAccelMeasurementBuffer[1], APP_DEFAULT_THRESHOLD) == TRUE
#define Z_VALUE_CHANGE() compareADCReading(u8LastZ, doAccelMeasurementBuffer[1], APP_DEFAULT_THRESHOLD) == TRUE

#define SHOCKDETECT_X_VALUE_CHANGE() compareADCReading(u8LastX, doAccelMeasurementBuffer[1], APP_SHOCKDETECT_THRESHOLD) == TRUE
#define SHOCKDETECT_Y_VALUE_CHANGE() compareADCReading(u8LastY, doAccelMeasurementBuffer[1], APP_SHOCKDETECT_THRESHOLD) == TRUE
#define SHOCKDETECT_Z_VALUE_CHANGE() compareADCReading(u8LastZ, doAccelMeasurementBuffer[1], APP_SHOCKDETECT_THRESHOLD) == TRUE

#define BATTERYSAVE_X_VALUE_CHANGE() compareADCReading(u8LastX, doAccelMeasurementBuffer[1], APP_BATTERYSAVER_THRESHOLD) == TRUE
#define BATTERYSAVE_Y_VALUE_CHANGE() compareADCReading(u8LastY, doAccelMeasurementBuffer[1], APP_BATTERYSAVER_THRESHOLD) == TRUE
#define BATTERYSAVE_Z_VALUE_CHANGE() compareADCReading(u8LastZ, doAccelMeasurementBuffer[1], APP_BATTERYSAVER_THRESHOLD) == TRUE

#define ANTITHEFT_VALUE_CHANGE() compareADCReading(128, doAccelMeasurementBuffer[1], (uint8_t) u16thresh) == TRUE

#define StoreADCValue() \
  do{ \
      DelayMs(1); \
      Adc_ManualRead(gAdcPrimary_c, &adcConvResult); \
      doAccelMeasurementBuffer[1] = (uint8_t)(adcConvResult>>4); \
  }while(FALSE)  

#define SoundsBuzzerOnce(LED, _delay, __delay) \
  do{ \
      BUZZER_ON(); \
      LED_TurnOnLed(LED); \
      DelayMs(_delay); \
      BUZZER_OFF(); \
      LED_TurnOffLed(LED); \
      DelayMs(__delay); \
  }while(FALSE)

#define SoundsBuzzerTwice(LED, _delay) \
  do{ \
      SoundsBuzzerOnce(LED, _delay, 50); \
      SoundsBuzzerOnce(LED, _delay, 50); \
  }while(FALSE)

#define SoundsBuzzerThrice(LED, _delay) \
  do{ \
      SoundsBuzzerTwice(LED, _delay); \
      SoundsBuzzerOnce(LED, _delay, 50); \
  }while(FALSE)

#define ClearTimerEvent() \
  do{ \
      LED_ToggleLed(LED1); \
      gu16msTimer = 0; \
      gu16timerEvent[0] = 1750; \
      gu16Events &= ~TIMER_EVENT; \
  }while(FALSE)

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -