Freescale Semiconductor Application Note Document Number: AN4070 Rev 1, 10/2011 Motion and Freefall Detection Using the MMA8451, 2, 3Q by: Kimberly Tuck Applications Engineer 1.0 Introduction The MMA8451, 2, 3Q has one (1) embedded functions for both Motion and/or Freefall along with a very flexible interrupt routing scheme. Motion is often used to simply alert the main processor that the device is currently in use. This can be accomplished with the Motion function and/or with the Transient function, described in Freescale application note AN4071. The transient function has the option of disabling the high pass filter and can behave exactly like the motion detection. This gives the user two separate programmable interrupts for motion detection if desired. The motion and freefall detection is an embedded function that can save overall system power by using an interrupt scheme. This feature alerts the main processor when a motion/tilt threshold or Freefall event has occurred. The embedded motion detection allows the user to enable and disable different axes. When the event occurs the direction of the event will be given as positive or negative acceleration. Result: This feature saves the system processor from reading out the XYZ data continually and running a software algorithm to compare data with thresholds. 1.1 Key Words Motion, Freefall, Interrupt, Transient Detection, Acceleration, Tumble, Debounce, Embedded, Tilt, Configuration Registers, DBCNTM bit, Threshold, Sensor © 2010, 2011 Freescale Semiconductor, Inc. All rights reserved. TABLE OF CONTENTS 1.0 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.1 Key Words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 1.2 Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.0 MMA8451, 2, 3Q Consumer 3-axis Accelerometer 3 by 3 by 1 mm . . . . . . . . . . . . 2 2.1 Output Data, Sample Rates and Dynamic Ranges of all Three Products . . . . . . . . 2 2.1.1 MMA8451Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1.2 MMA8452Q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.1.3 MMA8453Q Note: No HPF Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 3.0 Motion and Freefall Applications Using the MMA8451, 2, 3Q Accelerometer . . . 3 3.1 Freefall Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3.2 Motion Detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 3.3 Signature of Linear Freefall and Rotational Fall . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 4.0 Register Settings for the Motion/ Freefall Function . . . . . . . . . . . . . . . . . . . . . . . . 5 4.1 Register 0x15: FF/MT Config - Configuration Register . . . . . . . . . . . . . . . . . . . . . . 5 4.1.1 Configuring the MMA845 1, 2, 3Q for Motion Detection . . . . . . . . . . . . . . . . 5 4.1.2 Configuring the MMA8451, 2, 3Q for Freefall Detection . . . . . . . . . . . . . . . . 6 4.2 Register 0x17 FF_MT_THS Register (Read/Write) - Setting the Threshold . . . . . . 6 4.2.1 Example: Setting the Threshold for Motion Detection . . . . . . . . . . . . . . . . . 8 4.2.2 Example: Setting the Threshold for Freefall Detection . . . . . . . . . . . . . . . . . 8 4.3 Register 0x18 FF_MT_COUNT Register (Read/Write) - Setting the Debounce Counter ................................................................. 8 4.4 Register 0x16 FF_MT_SRC Register (Read Only) - Motion/Freefall Source Detection Register . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 5.0 Configuring the Motion/Freefall to an Interrupt Pin . . . . . . . . . . . . . . . . . . . . . . . . 9 5.1 Reading the System Interrupt Status Source Register . . . . . . . . . . . . . . . . . . . . . . 9 6.0 Details for Configuring the MMA8451, 2, 3Q for Motion/Freefall Detection . . . . 10 Table 12.Registers of Importance for Setting up the Motion/Freefall Detection . . . . . . 10 6.1 Example Steps for Configuring Motion Detection . . . . . . . . . . . . . . . . . . . . . . . . . 11 6.2 Example Steps for Configuring Linear Freefall Detection . . . . . . . . . . . . . . . . . . . 12 1.2 Summary A. The advantage of having two embedded functions to detect either Motion or linear Freefall which are routed to the choice of two interrupt pins allows for many combinations of events to be detected meeting the needs of many different use cases. For example: The embedded Motion/Freefall function can be used to detect a tumble using both the linear Freefall on one channel and the Motion detection to detect the spin on another channel. B. The status register for the Motion/Freefall function is only read when a change has occurred. C. Less processing is required on the microcontroller or processor with the embedded function since the condition is detected internally. The XYZ registers are not polled and data is not manipulated by the processor to detect the events. D. The threshold and debounce counter are changeable in either the active or standby mode to allow for adjustments after the part has transitioned from the wake to the sleep mode. E. Motion detection varies from Transient detection. The Motion detection can trigger on a change in a static acceleration value such as tilt. The Transient detection can behave like the Motion detection once the HPF is bypassed. F. The latch will hold the status register values until the status is read to clear the interrupt. 2.0 MMA8451, 2, 3Q Consumer 3-axis Accelerometer 3 by 3 by 1 mm NC NC VDD The MMA8451, 2, 3Q has a selectable dynamic range of ±2g, ±4g, ±8g. The device has eight different output data rates, selectable high-pass filter cutoff frequencies, and high pass filtered data. The available resolution of the data and the embedded features is dependant on the specific device. Note: The MMA8450Q has a different memory map and has a slightly different pinout configuration. 16 15 14 13 NC 12 GND 11 INT1 4 10 GND 5 9 INT2 2 NC 3 SCL GND MMA845xQ 16-Pin QFN (Top View) 6 7 8 NC BYP SA0 1 SDA VDDIO Figure 1. MMA8451, 2, 3Q Consumer 3-axis Accelerometer 3 by 3 by 1 mm 2.1 2.1.1 Output Data, Sample Rates and Dynamic Ranges of all Three Products MMA8451Q 1. 14-bit data 2g (4096 counts/g = 0.25 mg/LSB) 4g (2048 counts/g = 0.5 mg/LSB) 8g (1024 counts/g = 1 mg/LSB) 2. 8-bit data 2g (64 counts/g = 15.6 mg/LSB) 4g (32 counts/g = 31.25 mg/LSB) 8g (16 counts/g = 62.5 mg/LSB) 3. Embedded 32 sample FIFO (MMA8451Q) 2.1.2 MMA8452Q 1. 12-bit data 2g (1024 counts/g = 1 mg/LSB) 4g (512 counts/g = 2 mg/LSB) 8g (256 counts/g = 3.9 mg/LSB) 2. 8-bit data 2g (64 counts/g = 15.6 mg/LSB) 4g (32 counts/g = 31.25 mg/LSB) 8g (16 counts/g = 62.5 mg/LSB) 2.1.3 MMA8453Q Note: No HPF Data 1. 10-bit data 2g (256 counts/g = 3.9 mg/LSB) 4g (128 counts/g = 7.8 mg/LSB) 8g (64 counts/g = 15.6 mg/LSB) 2. 8-bit data 2g (64 counts/g = 15.6 mg/LSB) 4g (32 counts/g = 31.25 mg/LSB) 8g (16 counts/g = 62.5 mg/LSB) AN4070 2 Sensors Freescale Semiconductor, Inc. 3.0 Motion and Freefall Applications Using the MMA8451, 2, 3Q Accelerometer There are many applications that could potentially use Motion and/or Freefall. Some examples are the following: • Simpler motion signatures for gesturing (tilt thresholds, generic motions, linear freefalls • Human motion monitoring (specific parameters for motion and freefall) • Tamper detection on doors (detecting a threshold is exceeded or a change in tilt) • Shock detection or motion detection tracking assets (a threshold is exceeded) • Risk of an object falling: hard disk drives (linear freefall and motion) • Field meter monitoring for large motion/falls of the meters (tilt threshold change) 3.1 Freefall Detection The Freefall function of the MMA8451, 2, 3Q detects linear freefall when X and Y and Z are below a set threshold. Typically this set threshold is below 0.35g. Although Freefall is often considered to be linear, this is often not entirely true in many fall use cases. Many falls can be tumbles which may cause the object to spin while falling. The following are equations of motion which can be used to determine the time or distance of a fall. By integrating acceleration one can solve for velocity. Then to solve for position, a second integration is required. A = constant = – 9.81m ⁄ s 2 (Integrate acceleration to get the velocity equation) v = ∫ A dt = v 0 + At (Integrate velocity to get position) d = ∫ (v 0 + At ) dt 1 2 d = d 0 + v 0 t + --- At 2 1 2 d = --- At solving for time t = 2 2d ------- (Assuming the initial conditions are equal to zero). A Table 1. Calculated Time and Distance for a Linear Freefall Time Distance Distance Time 1 ms 4.91 μm 1 cm 45 ms 10 ms 0.49 mm 10 cm 142 ms 100 ms 4.91 cm 20 cm 202 ms 200 ms 19.6 cm 25 cm 226 ms 300 ms 44.1 cm 30 cm 247 ms 500 ms 1.23m 1m 351 ms 1s 4.905m 5m 1s Based on Table 1, one can determine the time that a fall will take based on the distance or vice-versa. When designing a freefall protection algorithm the typical height of the fall or a range of heights should be considered. Then the time the system will take to realize the device is in freefall, along with the time required to implement a protection mechanism, must be considered. For a freefall algorithm a minimum of 120 ms should be considered for the freefall condition to be met to be considered a linear freefall and not a false trigger. AN4070 Sensors Freescale Semiconductor, Inc. 3 3.2 Motion Detection Motion detection can be used to alert that the device has exceeded a specific acceleration. This event could be due to a tilt or due to an acceleration that exceeds a value from a linear motion as shown Figure 2. Figure 2. Motion Detection per Tilt or Linear Acceleration The motion function can be used for detecting tumble. The signature of a tumble is shown in Figure 3. During the rotation of the tumble the magnitude of the three axes is much greater than 0g. In order to detect tumble, for example, the motion detection condition must be set to detect for X or Y or Z > 2g. It is also important to set the debounce counter to about 100 ms to avoid false readings. The debounce counter acts like a filter to determine whether the condition exists for 100 ms or longer. Figure 3. Rotational Freefall Signature AN4070 4 Sensors Freescale Semiconductor, Inc. 3.3 Signature of Linear Freefall and Rotational Fall Figure 4, shows the signature of a Linear Freefall and a Rotational Fall. Both are falling events that require different conditions for detection. To be able to capture either a Linear Freefall or a Rotational Fall, the Motion/Freefall embedded function can be used to detect the Linear Freefall while the Transient can be used to detect the Rotational Fall (Motion). Each function can be routed to the same interrupt pin or routed to separate interrupt pins. Figure 4. Fall Event Showing Linear and Rotational Fall 4.0 Register Settings for the Motion/ Freefall Function There are four (4) registers associated with the Motion/Freefall embedded function. 1. Register 0x15 FF/MT Config - Motion/Freefall Configuration 2. Register 0x17 FF_MT_THS - Setting the Threshold 3. Register 0x18 FF_MT_COUNT - Setting the Debounce Counter 4. Register 0x16 FF_MT_SRC - Motion/Freefall Source Detection Refer to Table 12 for the complete list of all registers that can be used with Motion/Freefall. 4.1 Register 0x15: FF/MT Config - Configuration Register The first register is the Motion/Freefall Configuration Register shown in Table 2. This register determines which axes to enable with regards to three (3) conditions: 1. Which axes will be involved, 2. Whether the event will be a linear freefall or a motion and, 3. Whether the event detected should be latched or not into the source register. Table 2. Register 0x15: FF/MT Config - Configuration Register (Read/Write) and Description Reg 0x15 ELE OAE ZEFE YEFE XEFE — — — Motion 1 1 1 1 1 0 0 0 Freefall 1 0 1 1 1 0 0 0 4.1.1 Configuring the MMA845 1, 2, 3Q for Motion Detection Motion Detection with ELE = 0, OAE = 1 In this mode, the EA bit indicates a motion event after the debounce counter time is reached. The ZEFE, YEFE, and XEFE control bits determine which axes are taken into consideration for motion detection. Once the EA bit is set, and DBCNTM = 0, the EA bit can get cleared only after the delay specified by FF_MT_COUNT. If DBCNTM = 1, the EA bit is cleared as soon as the motion high-g condition disappears. The event flags ZHE, ZHP, YHE, YHP, XHE, and XHP reflect the motion detection status (i.e., high-g event) without any debouncing, provided that the corresponding bits ZEFE, YEFE, and/or XEFE are set. Reading the FF_MT_SRC does not clear any flags, nor is the debounce counter reset. AN4070 Sensors Freescale Semiconductor, Inc. 5 Motion Detection with ELE = 1, OAE = 1 In this mode, the EA bit indicates a motion event after debouncing. The ZEFE, YEFE, and XEFE control bits determine which axes are taken into consideration for motion detection. Once the debounce counter reaches the threshold, the EA bit is set, and remains set until the FF_MT_SRC register is read. When the FF_MT_SRC register is read, all register bits are cleared and the debounce counter are cleared and a new event can only be generated after the delay specified by FF_MT_CNT. While the bit EA is zero, the event flags ZHE, ZHP, YHE, YHP, XHE, and XHP reflect the motion detection status (i.e., high-g event) without any debouncing, provided that the corresponding bits ZEFE, YEFE, and/or XEFE are set. When the EA bit is set, these bits keep their current value until the FF_MT_SRC register is read. Table 3. Motion Example 1: X or Y > 3g Reg 0x15 ELE OAE ZEFE YEFE XEFE — — — Motion 1 1 0 1 1 0 0 0 Example Code: IIC_RegWrite(0x15, 0xD8); //Enable Latch, Motion, X-axis, Y-axis 4.1.2 Configuring the MMA8451, 2, 3Q for Freefall Detection Freefall Detection with ELE = 0, OAE = 0 In this mode, the EA bit (0x16 bit 7) indicates a freefall event after the debounce counter is complete. The ZEFE, YEFE, and XEFE control bits determine which axes are considered for the freefall detection. Once the EA bit is set, and DBCNTM = 0, the EA bit can get cleared only after the delay specified by FF_MT_COUNT. This is because the counter is in decrement mode. If DBCNTM = 1, the EA bit is cleared as soon as the freefall condition disappears, and will not be set again before the delay specified by FF_MT_COUNT has passed. Reading the FF_MT_SRC register does not clear the EA bit. The event flags (0x16) ZHE, ZHP, YHE, YHP, XHE, and XHP reflect the motion detection status (i.e. high-g event) without any debouncing, provided that the corresponding bits ZEFE, YEFE, and/or XEFE are set. Freefall Detection with ELE = 1, OAE = 0 In this mode, the EA event bit indicates a freefall event after the debounce counter. Once the debounce counter reaches the time value for the set threshold, the EA bit is set, and remains set until the FF_MT_SRC register is read. When the FF_MT_SRC register is read, the EA bit and the debounce counter are cleared and a new event can only be generated after the delay specified by FF_MT_CNT. The ZEFE, YEFE, and XEFE control bits determine which axes are considered for the freefall detection. While EA = 0, the event flags ZHE, ZHP, YHE, YHP, XHE, and XHP reflect the motion detection status (i.e., high-g event) without any debouncing, provided that the corresponding bits ZEFE, YEFE, and/or XEFE are set. The event flags ZHE, ZHP, YHE, YHP, XHE, and XHP are latched when the EA event bit is set. The event flags ZHE, ZHP, YHE, YHP, XHE, and XHP will start changing only after the FF_MT_SRC register has been read. Table 4. Freefall Example 1: X AND Y AND Z < 0.2g Reg 0x15 ELE OAE ZEFE YEFE XEFE Freefall 1 0 1 1 1 0 0 0 Example Code: IIC_RegWrite(0x15, 0xB8); //Enable Latch, Freefall, X-axis, Y-axis and Z-axis 4.2 Register 0x17 FF_MT_THS Register (Read/Write) - Setting the Threshold The threshold for the event is set in Register 0x17, shown in Table 5. The threshold register has a range of 0 to 127 counts. The minimum threshold resolution is 0.063g/LSB. The maximum value is 8g, even if the full scale value is set to 2g or 4g. Table 5. Register 0x17 FF_MT_THS_Register (Read/Write) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 DBCNTM THS6 THS5 THS4 THS3 THS2 THS1 THS0 Note: • For Motion detection the condition is > Threshold (Figure 5) • For Freefall the condition is < Threshold (Figure 5) • All thresholds are absolute value. AN4070 6 Sensors Freescale Semiconductor, Inc. +Full Scale X (Y, Z) High-g Region High-g+ Threshold X (Y, Z) Low-g Region Positive Acceleration Low-g Threshold High-g- Threshold Negative Acceleration X (Y, Z) High-g Region -Full Scale Figure 5. Freefall Condition The DCNTM bit is best understood from the diagram in Figure 6. The default value is for the counter to be in the increment/decrement mode. Low-g Event on all 3-axis (Freefall) Count Threshold (a) FF_MT Counter Value EA FF Low-g Event on all 3-axis (Freefall) DBCNTM = 1 Count Threshold FF_MT Counter Value (b) EA FF Low-g Event on all 3-axis (Freefall) DBCNTM = 0 Count Threshold FF_MT Counter Value (c) EA FF Figure 6. DBCNTM Bit Function AN4070 Sensors Freescale Semiconductor, Inc. 7 4.2.1 Example: Setting the Threshold for Motion Detection Motion Example 1: X or Y > 3g The device can be in 2g, 4g or 8g mode. The step count is 0.063 counts/g regardless of the full scale. 3g/0.063g/count = 48 counts. Note the threshold can be changed in either the Active or the Standby Mode. This may be useful for readjusting the threshold while in the active mode after an event has occurred. The DBCNTM bit will be kept cleared. Example Code: IIC_RegWrite(0x17, 0x30); //Set Threshold to 48 counts 4.2.2 Example: Setting the Threshold for Freefall Detection Freefall Example 1: X AND Y AND Z < 0.2g In this example the device could be either 2g, 4g, or 8g mode. The step count is 0.063g/count. 0.2g/ 0.063g/count = 3 counts. For this example the DBCNTM bit will be kept cleared to filter out spurious noise. Example Code: IIC_RegWrite(0x17, 0x03); //Set Threshold to 3 counts 4.3 Register 0x18 FF_MT_COUNT Register (Read/Write) - Setting the Debounce Counter Register 0x18 shown in Table 6 is an 8-bit counter used for low pass filtering. Table 6. Register 0x18 FF_MT_COUNT_(Read/Write) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 D7 D6 D5 D4 D3 D2 D1 D0 The time step used for the debounce sample count depends on the ODR chosen. The relationship is shown in Table 7. Note that there are 4 different oversampling modes in the MMA8451, 2, 3Q. There is a normal mode, a low power and low noise mode, a high resolution mode and a low power mode. The lowest power mode is the Low Power mode. The highest power mode is the high resolution mode. For more details on the different oversampling modes and their uses please refer to Freescale application note AN4075. Table 7. FF_MT_COUNT_1 Relationship with the ODR Max Time Range (s) Time Step (ms) ODR (Hz) Normal LPLN HighRes LP Normal LPLN HighRes LP 800 0.319 0.319 0.319 0.319 1.25 1.25 1.25 1.25 400 0.638 0.638 0.638 0.638 2.5 2.5 2.5 2.5 200 1.28 1.28 0.638 1.28 5 5 2.5 5 100 2.55 2.55 0.638 2.55 10 10 2.5 10 50 5.1 5.1 0.638 5.1 20 20 2.5 20 12.5 5.1 20.4 0.638 20.4 20 80 2.5 80 6.25 5.1 20.4 0.638 40.8 20 80 2.5 160 1.56 5.1 20.4 0.638 40.8 20 80 2.5 160 An ODR of 100 Hz in “normal mode”, with a FF_MT_COUNT value of 10 would result in a minimum debounce response time of 100 ms. Note: the debounce counter can be changed in the active or the standby mode. This may be desirable when the device changes from the wake mode to the sleep mode as the ODR may change. This will change the timing of the debounce counter. Example Code: IIC_RegWrite(0x18, 0x0A); //100 ms debounce timing AN4070 8 Sensors Freescale Semiconductor, Inc. 4.4 Register 0x16 FF_MT_SRC Register (Read Only) - Motion/Freefall Source Detection Register This register keeps track of the acceleration event which is triggering (or has triggered, in case of ELE bit in FF_MT_CFG register being set to 1) the event flag. In particular EA is set to a logic 1 when the logical combination of acceleration events flags specified in FF_MT_CFG register is true. This bit is used in combination with the values in INT_EN_FF_MT and INT_CFG_FF_MT register bits to generate the freefall/motion interrupts. An X, Y, or Z high event is true when the acceleration value of the X or Y or Z channel is higher than the preset threshold value defined in the FF_MT_THS register. As it is possible with ELE = 1 that an X, Y, or Z high event appears or disappears during the debounce period, the bits XHE, XHP, YHE, YHP, ZHE, and ZPE represent the state when the debounce counter reaches the threshold defined by the FF_MT_COUNT register. Conversely an X,Y, and Z low event is true when the acceleration value of the X and Y and Z channel is lower than or equal to the preset threshold value defined in the FF_MT_THS register. Reading of this register clears FF_MT_SRC register and allows the refreshing of data in the FF_MT_SRC register if the ELE bit is set. If the ELE bit is cleared to a logic ‘0’, all bits in the FF_MT_SRC register indicate the real-time status of the event flags in the FF_MT_SRC register. Note: The ZHP, YHP and XHP are the polarity or directional status bits. These bits update regardless of whether the event has been detected. Table 8. Events Detected in the Motion/Freefall Source Detection Register (Read Only) and Legend Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 EA — ZHE ZHP YHE YHP XHE XHP 5.0 Configuring the Motion/Freefall to an Interrupt Pin In order to set up the system to route to a hardware interrupt pin, the System Interrupt (Bit 2 in Reg 0x2D) must be enabled. The MMA8451, 2, 3Q allows for seven (7) separate types of interrupts. One (1) of these are reserved for Motion/Freefall. For example, to configure the Motion/Freefall function, the following two steps should be followed. Step 1: Set the Interrupt Bit 2 in Register 0x2D shown in Table 9. Table 9. 0x2D CTRL_REG4 Register (Read/Write) – Interrupt Enable Description and Legend Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INT_EN_ASLP INT_EN_FIFO INT_EN_TRANS INT_EN_LNDPRT INT_EN_PULSE INT_EN_FF_MT — INT_EN_DRDY The corresponding interrupt enable bit allows the Motion/Freefall interrupt to route its event detection flag to the interrupt controller of the system. The interrupt controller routes the enabled function to the INT1 or INT2 pin. To enable the Freefall/Motion function, set Bit 2 in Register 0x2D as follows: Example Code: IIC_RegWrite(0x2D, 0x04); Step 2: Route the interrupt to INT1 or to INT2. This is done in register 0x2E shown in Table 10. Table 10. 0x2E CTRL_REG5 Register (Read/Write) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 INT_CFG_ASLP INT_CFG_FIFO INT_CFG_TRANS INT_CFG_LNDPRT INT_CFG_PULSE INT_CFG_FF_MT — INT_CFG_DRDY Note: To set Motion/Freefall to INT1 set Bit 2 in register 0x2E. Example Code: IIC_RegWrite(0x2E,0x04); 5.1 Reading the System Interrupt Status Source Register In the interrupt source register shown in Table 11 the status of the various embedded functions can be determined. The bits that are set (logic ‘1’) indicate which function has asserted an interrupt; conversely, the bits that are cleared (logic ‘0’) indicate which function has not asserted or has de-asserted an interrupt. The bits are cleared by reading the appropriate interrupt source register. Table 11. 0x0C INT_SOURCE: System Interrupt Status Register (Read Only) Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 SRC_ASLP SRC_FIFO SRC_TRANS SRC_LNDPRT SRC_PULSE SRC_FF_MT — SRC_DRDY AN4070 Sensors Freescale Semiconductor, Inc. 9 6.0 Details for Configuring the MMA8451, 2, 3Q for Motion/Freefall Detection The registers of importance for configuring the MMA8451, 2, 3Q for Motion detection or Freefall detection are listed in Table 12. Table 12. Registers of Importance for Setting up the Motion/Freefall Detection Reg Name Definition Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 0C INT_SOURCE Interrupt Status R SRC_ASLP SRC_FIFO SRC_TRANS SRC_LNDPRT SRC_PULSE SRC_FF_MT — SRC_DRDY 15 FF_MT_CFG FF/Motion Config R/W ELE OAE ZEFE YEFE XEFE — — — 16 FF_MT_SRC FF/Motion Source R EA — ZHE ZHP YHE YHP XHE XHP 17 FF_MT_THS FF/Motion Threshold R/W DBCNTM THS6 THS5 THS4 THS3 THS2 THS1 THS0 18 FF_MT_COUNT FF/Motion Debounce R/W D7 D6 D5 D4 D3 D2 D1 D0 2A CTRL_REG1 Control Reg1 R/W ASLP_RATE1 ASLP_RATE0 DR2 DR1 DR0 LNOISE F_READ ACTIVE 2D CTRL_REG4 Control Reg4 R/W (Interrupt Enable Map) INT_EN _ASLP INT_EN _FIFO INT_EN _TRANS INT_EN_LNDPRT INT_EN_PULSE INT_EN_FF_MT — INT_EN_DRDY 2E CTRL_REG5 Control Reg5 R/W (Interrupt Configuration) INT_CFG_ASLP INT_CFG_FIFO INT_CFG_TRANS INT_CFG_LNDPRT INT_CFG_PULS INT_CFG_FF_M E T — INT_CFG_DRDY AN4070 10 Sensors Freescale Semiconductor, Inc. 6.1 Example Steps for Configuring Motion Detection X or Y > 3g using MFF Function 4g, 100 Hz ODR, Normal Mode Step 1: Put the device into Standby Mode: Register 0x2A CTRL_REG1 IIC_RegWrite(0x2A, 0x18); //Set the device in 100 Hz ODR, Standby Step 2: Set Configuration Register for Motion Detection by setting the “OR” condition OAE = 1, enabling X, Y, and the latch IIC_RegWrite(0x15, 0xD8) Step 3: Threshold Setting Value for the Motion detection of > 3g Note: The step count is 0.063g/ count • 3g/0.063g = 47.6; //Round up to 48 IIC_RegWrite(0x17, 0x30) Step 4: Set the debounce counter to eliminate false readings for 100 Hz sample rate with a requirement of 100 ms timer. Note: 100 ms/10 ms (steps) = 10 counts IIC_RegWrite(0x18, 0x0A); Step 5: Enable Motion/Freefall Interrupt Function in the System (CTRL_REG4) IIC_RegWrite(0x2D, 0x04); Step 6: Route the Motion/Freefall Interrupt Function to INT1 hardware pin (CTRL_REG5) IIC_RegWrite(0x2E, 0x04); Step 7: Put the device in Active Mode CTRL_REG1_Data = IIC_RegRead(0x2A); CTRL_REG1_Data| = 0x01; IIC_RegWrite(CTRL_REG1_Data); Step 8: Write Interrupt Service Routine Reading the System Interrupt Status and the Motion/Freefall Status Interrupt void isr_KBI (void) { //clear the interrupt flag CLEAR_KBI_INTERRUPT; //Determine source of interrupt by reading the system interrupt IntSourceSystem=IIC_RegRead(0x0C); //Set up Case statement here to service all of the possible interrupts if ((Int_SourceSystem &0x04)==0x04) { //Perform an Action since Motion Flag has been set //Read the Motion/Freefall Function to clear the interrupt IntSourceMFF=IIC_RegRead(0x16); //Can parse out data to perform a specific action based on the //axes that made the condition true and read the direction of the //motion event } } AN4070 Sensors Freescale Semiconductor, Inc. 11 6.2 Example Steps for Configuring Linear Freefall Detection X AND Y AND Z < 0.2g using MFF Function, 50 Hz ODR Step 1: Put the device in Standby Mode: Register 0x2A CTRL_REG1 IIC_RegWrite(0x2A, 0x20); //Set the device in 50 Hz ODR, Standby Step 2: Configuration Register set for Freefall Detection enabling “AND” condition, OAE = 0, Enabling X, Y, Z and the Latch IIC_RegWrite(0x15, 0xB8); Step 3: Threshold Setting Value for the resulting acceleration < 0.2g Note: The step count is 0.063g/count • 0.2g/0.063g = 3.17 counts //Round to 3 counts IIC_RegWrite(0x17, 0x03); Step 4: Set the debounce counter to eliminate false positive readings for 50Hz sample rate with a requirement of 120 ms timer, assuming Normal Mode. Note: 120 ms/20 ms (steps) = 6 counts IIC_RegWrite(0x18, 0x06); Step 5: Enable Motion/Freefall Interrupt Function in the System (CTRL_REG4) IIC_RegWrite(0x2D, 0x04); Step 6: Route the Motion/Freefall Interrupt Function to INT2 hardware pin (CTRL_REG5) IIC_RegWrite(0x2E, 0x00); Step 7: Put the device in Active Mode, 50 Hz CTRL_REG1_Data = IIC_RegRead(0x2A); CTRL_REG1_Data| = 0x01; IIC_RegWrite(CTRL_REG1_Data); Step 8: Write Interrupt Service Routine Reading the System Interrupt Status and the Motion/Freefall Status Interrupt void isr_KBI (void) { //clear the interrupt flag CLEAR_KBI_INTERRUPT; //Determine source of the interrupt by first reading the system interrupt IntSourceSystem=IIC_RegRead(0x0C); //Set up Case statement here to service all of the possible interrupts if ((IntSourceSystem&0x04)==0x04) { //Perform an Action since Freefall Flag has been set //Read the Motion/Freefall Function to clear the interrupt IntSourceMFF=IIC_RegRead(0x16); //Can parse out data to perform a specific action based on the axes } } AN4070 12 Sensors Freescale Semiconductor, Inc. Related Documentation The MMA845xQ device features and operations are described in a variety of reference manuals, user guides, and application notes. To find the most-current versions of these documents: 1. Go to the Freescale homepage at: http://www.freescale.com/ 2. 3. In the Keyword search box at the top of the page, enter the device number MMA845xQ. In the Refine Your Result pane on the left, click on the Documentation link. How to Reach Us: Home Page: www.freescale.com Web Support: http://www.freescale.com/support USA/Europe or Locations Not Listed: Freescale Semiconductor, Inc. Technical Information Center, EL516 2100 East Elliot Road Tempe, Arizona 85284 1-800-521-6274 or +1-480-768-2130 www.freescale.com/support Europe, Middle East, and Africa: Freescale Halbleiter Deutschland GmbH Technical Information Center Schatzbogen 7 81829 Muenchen, Germany +44 1296 380 456 (English) +46 8 52200080 (English) +49 89 92103 559 (German) +33 1 69 35 48 48 (French) www.freescale.com/support Japan: Freescale Semiconductor Japan Ltd. Headquarters ARCO Tower 15F 1-8-1, Shimo-Meguro, Meguro-ku, Tokyo 153-0064 Japan 0120 191014 or +81 3 5437 9125 [email protected] Asia/Pacific: Freescale Semiconductor China Ltd. Exchange Building 23F No. 118 Jianguo Road Chaoyang District Beijing 100022 China +86 10 5879 8000 [email protected] For Literature Requests Only: Freescale Semiconductor Literature Distribution Center 1-800-441-2447 or +1-303-675-2140 Fax: +1-303-675-2150 [email protected] AN4070 Rev. 1 10/2011 Information in this document is provided solely to enable system and software implementers to use Freescale Semiconductor products. There are no express or implied copyright licenses granted hereunder to design or fabricate any integrated circuits or integrated circuits based on the information in this document. Freescale Semiconductor reserves the right to make changes without further notice to any products herein. Freescale Semiconductor makes no warranty, representation or guarantee regarding the suitability of its products for any particular purpose, nor does Freescale Semiconductor assume any liability arising out of the application or use of any product or circuit, and specifically disclaims any and all liability, including without limitation consequential or incidental damages. “Typical” parameters that may be provided in Freescale Semiconductor data sheets and/or specifications can and do vary in different applications and actual performance may vary over time. All operating parameters, including “Typicals”, must be validated for each customer application by customer’s technical experts. Freescale Semiconductor does not convey any license under its patent rights nor the rights of others. Freescale Semiconductor products are not designed, intended, or authorized for use as components in systems intended for surgical implant into the body, or other applications intended to support or sustain life, or for any other application in which the failure of the Freescale Semiconductor product could create a situation where personal injury or death may occur. Should Buyer purchase or use Freescale Semiconductor products for any such unintended or unauthorized application, Buyer shall indemnify and hold Freescale Semiconductor and its officers, employees, subsidiaries, affiliates, and distributors harmless against all claims, costs, damages, and expenses, and reasonable attorney fees arising out of, directly or indirectly, any claim of personal injury or death associated with such unintended or unauthorized use, even if such claim alleges that Freescale Semiconductor was negligent regarding the design or manufacture of the part. Freescale and the Freescale logo are trademarks of Freescale Semiconductor, Inc., Reg. U.S. Pat. & Tm. Off. The Energy Efficiency Solutions Logo and Xtrinsic are trademarks of Freescale Semiconductor, Inc. All other product or service names are the property of their respective owners. © 2011 Freescale Semiconductor, Inc. All rights reserved.