<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: MMA8452 interrupt stays high forever in Sensors</title>
    <link>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282624#M587</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sree,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;Could you please post here your complete source code? The configuration of the MMA8452Q seems to be correct, but it is not clear when you read the TRANSIENT_SRC register (0x1E) in order to deassert the INT2 pin that is assigned to the transient detection function. Did you try to read back the INT_SOURCE register (0x0C) to make sure the SRC_TRANS bit is cleared after reading the TRANSIENT_SRC register?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;It might be useful to post your question at the Arduino forum as well.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Tomas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 31 Dec 2013 12:52:36 GMT</pubDate>
    <dc:creator>TomasVaverka</dc:creator>
    <dc:date>2013-12-31T12:52:36Z</dc:date>
    <item>
      <title>MMA8452 interrupt stays high forever</title>
      <link>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282623#M586</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I'm using the MMA8452Q for one of my projects and it stays at high at the pin2 (Arduino Uno) (int0?) always. Following are the configurations that we have for the chip. Please note that only one interrupt which is INT_TRANS is enabled. We read the INT_SOURCE register and we can see the corresponding interrupt bit is set. In order to clear the interrupt we are reading the TRANSIENT_SRC register.&amp;nbsp; &lt;/P&gt;&lt;P&gt;Can you please tell us what is wrong with the our code? Have you ever seen any similar issue with the interrupts on this chips?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks a lot in advance. Would really appreciate a swift response.&lt;/P&gt;&lt;P&gt;Sree&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// The SparkFun breakout board defaults to 1, set to 0 if SA0 jumper on the bottom of the board is set&lt;/P&gt;&lt;P&gt;#define MMA8452_ADDRESS 0x1D&amp;nbsp; // 0x1D if SA0 is high, 0x1C if low&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Define a few of the registers that we will be accessing on the MMA8452&lt;/P&gt;&lt;P&gt;#define OUT_X_MSB 0x01&lt;/P&gt;&lt;P&gt;#define XYZ_DATA_CFG&amp;nbsp; 0x0E&lt;/P&gt;&lt;P&gt;#define WHO_AM_I&amp;nbsp;&amp;nbsp; 0x0D&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Control registers&lt;/P&gt;&lt;P&gt;#define CTRL_REG1&amp;nbsp; 0x2A&lt;/P&gt;&lt;P&gt;#define CTRL_REG2&amp;nbsp; 0x2B&lt;/P&gt;&lt;P&gt;#define CTRL_REG3&amp;nbsp; 0x2C&lt;/P&gt;&lt;P&gt;#define CTRL_REG4&amp;nbsp; 0x2D&lt;/P&gt;&lt;P&gt;#define CTRL_REG5&amp;nbsp; 0x2E&lt;/P&gt;&lt;P&gt;#define ASLP_COUNT&amp;nbsp; 0x29&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Iniitial values of Control Registers&lt;/P&gt;&lt;P&gt;#define ASLP_12_5_HZ&amp;nbsp; 0x40&lt;/P&gt;&lt;P&gt;#define ODR_50_HZ&amp;nbsp; 0x20 &lt;/P&gt;&lt;P&gt;#define LNOISE_DEFAULT&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;#define F_READ_DEFAULT&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define SLPE&amp;nbsp; 0x04&amp;nbsp; &lt;/P&gt;&lt;P&gt;#define SMODS_LOW_POW&amp;nbsp; 0x18&lt;/P&gt;&lt;P&gt;#define MODS_NORMAL_POW&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;#define ST_DEFAULT&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;#define RST_DEFAULT&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define WAKE_FF_MT&amp;nbsp; 0x08&lt;/P&gt;&lt;P&gt;#define WAKE_TRANS&amp;nbsp; 0x40&amp;nbsp; &lt;/P&gt;&lt;P&gt;#define IPOL_DEFAULT 0x00&lt;/P&gt;&lt;P&gt;#define PP_OD_DEFAULT 0x00&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define INT_EN_FF_MT&amp;nbsp; 0x04&lt;/P&gt;&lt;P&gt;#define INT_EN_TRANS&amp;nbsp; 0x20&lt;/P&gt;&lt;P&gt;#define INT_EN_ASLP&amp;nbsp; 0x80&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define INT_CFG_FF_MT&amp;nbsp; 0x04&lt;/P&gt;&lt;P&gt;#define INT_CFG_TRANS&amp;nbsp; 0x20&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define ASLP_COUNT_50_HZ_960_MS&amp;nbsp; 0x03&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;#define ELE&amp;nbsp; 0x80&lt;/P&gt;&lt;P&gt;#define OAE_MOTION&amp;nbsp; 0x40&lt;/P&gt;&lt;P&gt;#define XYZ_EFE 0x18&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define DBCNTM_MOTION&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;#define THS_0_2_G&amp;nbsp; 0x0B&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define FF_MT_DEBOUNCE_50_HZ_20_MS&amp;nbsp; 0x0A&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define ELE&amp;nbsp; 0x10&lt;/P&gt;&lt;P&gt;#define XYZ_EFE 0x06&lt;/P&gt;&lt;P&gt;#define HPF_BYP 0x00&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define DBCNTM_TRANS&amp;nbsp; 0x00 &lt;/P&gt;&lt;P&gt;#define TRANS_THS_0_5_G&amp;nbsp; 0x05&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define TRANS_DEBOUNCE_50_HZ_20_MS&amp;nbsp; 0x03&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//The SRC registers for clearing and reading status of interrupts&lt;/P&gt;&lt;P&gt;#define SYSMOD 0x0B&lt;/P&gt;&lt;P&gt;#define TRANSIENT_SRC 0x1E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;#define FF_MT_SRC 0x16&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Motion Detection registers&lt;/P&gt;&lt;P&gt;#define FF_MT_CFG&amp;nbsp; 0x15&lt;/P&gt;&lt;P&gt;#define FF_MT_SRC&amp;nbsp; 0x16&lt;/P&gt;&lt;P&gt;#define FF_MT_THS&amp;nbsp; 0x17&lt;/P&gt;&lt;P&gt;#define FF_MT_COUNT&amp;nbsp; 0x18&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//Transient registers&lt;/P&gt;&lt;P&gt;#define TRANSIENT_CFG 0x1D&lt;/P&gt;&lt;P&gt;#define TRANSIENT_THS 0x1F&lt;/P&gt;&lt;P&gt;#define TRANSIENT_COUNT 0x20&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define INT_SOURCE&amp;nbsp; 0x0C&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void setup() &lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; /* ACCELEROMETER setup */&lt;/P&gt;&lt;P&gt;&amp;nbsp; pinMode(11,OUTPUT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; pinMode(10,OUTPUT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; pinMode(9,OUTPUT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; pinMode(3,OUTPUT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; pinMode(2,OUTPUT);&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.begin(); //Join the bus as a master&lt;/P&gt;&lt;P&gt;&amp;nbsp; initMMA8452(); //Test and intialize the MMA8452&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; Serial.println("Attaching the interrupt lines");&lt;/P&gt;&lt;P&gt;&amp;nbsp; attachInterrupt(0, int0_bh, CHANGE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; attachInterrupt(1, int1_bh, CHANGE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Serial.println("Attaching interrupt lines was successful!!!");&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void initMMA8452()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; byte val = readRegister(WHO_AM_I);&amp;nbsp; // Read WHO_AM_I register&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (val == 0x2A) // WHO_AM_I should always be 0x2A&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println("M is online...");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.print("Could not connect to MMA8452Q: 0x");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println(val, HEX);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1) ; // Loop forever if communication doesn't happen&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; MMA8452Standby();&amp;nbsp; // Must be in standby to change registers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Initialize GSCALE&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = GSCALE;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if(val &amp;gt; &lt;LI-EMOJI id="lia_smiling-face-with-sunglasses" title=":smiling_face_with_sunglasses:"&gt;&lt;/LI-EMOJI&gt; val = 8; //Easy error check&lt;/P&gt;&lt;P&gt;&amp;nbsp; val &amp;gt;&amp;gt;= 2; // Neat trick, see page 22. 00 = 2G, 01 = 4A, 10 = 8G&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(XYZ_DATA_CFG, val);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (ASLP_12_5_HZ | ODR_50_HZ | LNOISE_DEFAULT | F_READ_DEFAULT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG1, val);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (ST_DEFAULT | RST_DEFAULT | SMODS_LOW_POW | SLPE | MODS_NORMAL_POW);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG2, val);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (WAKE_TRANS | 0x02 | PP_OD_DEFAULT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG3, val);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG5, val);&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = ASLP_COUNT_50_HZ_960_MS;&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(ASLP_COUNT, val); &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (ELE | XYZ_EFE | HPF_BYP);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(TRANSIENT_CFG, val);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (DBCNTM_TRANS | TRANS_THS_0_5_G);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(TRANSIENT_THS, val);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = TRANS_DEBOUNCE_50_HZ_20_MS;&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(TRANSIENT_COUNT, val);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; //The default data rate is 800Hz and we don't modify it in this example code&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (INT_EN_TRANS);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG4, val);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; MMA8452Active();&amp;nbsp; // Set to active to start reading&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Sets the MMA8452 to standby mode. It must be in standby to change most register settings&lt;/P&gt;&lt;P&gt;void MMA8452Standby()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; byte c = readRegister(CTRL_REG1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG1, c &amp;amp; ~(0x01)); //Clear the active bit to go into standby&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Sets the MMA8452 to active mode. Needs to be in this mode to output data&lt;/P&gt;&lt;P&gt;void MMA8452Active()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; byte c = readRegister(CTRL_REG1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG1, c | 0x01); //Set the active bit to begin detection&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Feb 2026 21:51:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282623#M586</guid>
      <dc:creator>sreejithchandra</dc:creator>
      <dc:date>2026-02-03T21:51:24Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8452 interrupt stays high forever</title>
      <link>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282624#M587</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Sree,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;Could you please post here your complete source code? The configuration of the MMA8452Q seems to be correct, but it is not clear when you read the TRANSIENT_SRC register (0x1E) in order to deassert the INT2 pin that is assigned to the transient detection function. Did you try to read back the INT_SOURCE register (0x0C) to make sure the SRC_TRANS bit is cleared after reading the TRANSIENT_SRC register?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;It might be useful to post your question at the Arduino forum as well.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Tomas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 31 Dec 2013 12:52:36 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282624#M587</guid>
      <dc:creator>TomasVaverka</dc:creator>
      <dc:date>2013-12-31T12:52:36Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8452 interrupt stays high forever</title>
      <link>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282625#M588</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Tomas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Yes, as I already mentioned in order to clear the interrupt I'm reading the TRANSIENT_SRC register.&lt;/P&gt;&lt;P&gt;Do you think there is another reason for the accelerator chip keeping the interrupt pin 'high' always?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 01 Jan 2014 12:31:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282625#M588</guid>
      <dc:creator>sreejithchandra</dc:creator>
      <dc:date>2014-01-01T12:31:55Z</dc:date>
    </item>
    <item>
      <title>Re: Re: MMA8452 interrupt stays high forever</title>
      <link>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282626#M589</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Sree,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;I have just tried to reproduce your settings on the &lt;A href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=FRDM-KL25Z"&gt;FRDM-KL25Z board&lt;/A&gt; (see the attached code) and I had no problems to deassert the transient interrupt by reading the TRANSIENT_SRC register (0x1E). I am not really sure why you cannot deassert the interrupt pin, but I suppose that it might be related to the rest of your complete Arduino code or to the Arduino hardware. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 10.0pt; font-family: 'Arial','sans-serif';"&gt;Tomas&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 02 Jan 2014 12:49:17 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282626#M589</guid>
      <dc:creator>TomasVaverka</dc:creator>
      <dc:date>2014-01-02T12:49:17Z</dc:date>
    </item>
    <item>
      <title>Re: Re: MMA8452 interrupt stays high forever</title>
      <link>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282627#M590</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey Tomas,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much for the code. I was trying a few things in the mean time but couldn't make it working for Arduino. &lt;/P&gt;&lt;P&gt;I can see the INC_SOURCE is cleared after reading TRANS_SOURCE. Still the interrupt holds high after the first one is fired.&lt;/P&gt;&lt;P&gt;I'm sending out the whole code here. Can you please have a look at it?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//------------------------------------------------------------------------------------------------------------------------------------------------//&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;boards.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;SPI.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;Wire.h&amp;gt;&lt;/P&gt;&lt;P&gt;#include &amp;lt;services.h&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*==============================================================================&lt;/P&gt;&lt;P&gt; * MACROS&lt;/P&gt;&lt;P&gt; *============================================================================*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Bit-wise macros&lt;/P&gt;&lt;P&gt;#define SETBIT(x,y)&amp;nbsp;&amp;nbsp; (x |= (y))&amp;nbsp; //Set bit y in byte x &lt;/P&gt;&lt;P&gt;#define CLEARBIT(x,y) (x &amp;amp;= (~y)) //Clear bit Y in byte x &lt;/P&gt;&lt;P&gt;#define CHECKBIT(x,y) (x &amp;amp; (y))&amp;nbsp;&amp;nbsp; //True if bit y of byte x=1. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*==============================================================================&lt;/P&gt;&lt;P&gt; * ACCELEROMETER GLOBAL VARIABLES + CONSTANTS &lt;/P&gt;&lt;P&gt; *============================================================================*/&lt;/P&gt;&lt;P&gt;// The SparkFun breakout board defaults to 1, set to 0 if SA0 jumper on the bottom of the board is set&lt;/P&gt;&lt;P&gt;#define MMA8452_ADDRESS 0x1D&amp;nbsp; // 0x1D if SA0 is high, 0x1C if low&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Define a few of the registers that we will be accessing on the MMA8452&lt;/P&gt;&lt;P&gt;#define OUT_X_MSB 0x01&lt;/P&gt;&lt;P&gt;#define XYZ_DATA_CFG&amp;nbsp; 0x0E&lt;/P&gt;&lt;P&gt;#define WHO_AM_I&amp;nbsp;&amp;nbsp; 0x0D&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Control registers&lt;/P&gt;&lt;P&gt;#define CTRL_REG1&amp;nbsp; 0x2A&lt;/P&gt;&lt;P&gt;#define CTRL_REG2&amp;nbsp; 0x2B&lt;/P&gt;&lt;P&gt;#define CTRL_REG3&amp;nbsp; 0x2C&lt;/P&gt;&lt;P&gt;#define CTRL_REG4&amp;nbsp; 0x2D&lt;/P&gt;&lt;P&gt;#define CTRL_REG5&amp;nbsp; 0x2E&lt;/P&gt;&lt;P&gt;#define ASLP_COUNT&amp;nbsp; 0x29&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Iniitial values of Control Registers&lt;/P&gt;&lt;P&gt;#define ASLP_12_5_HZ&amp;nbsp; 0x40&lt;/P&gt;&lt;P&gt;#define ODR_50_HZ&amp;nbsp; 0x20 &lt;/P&gt;&lt;P&gt;#define LNOISE_DEFAULT&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;#define F_READ_DEFAULT&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;#define SLPE&amp;nbsp; 0x04&amp;nbsp; &lt;/P&gt;&lt;P&gt;#define SMODS_LOW_POW&amp;nbsp; 0x18&lt;/P&gt;&lt;P&gt;#define MODS_NORMAL_POW&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;#define ST_DEFAULT&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;#define RST_DEFAULT&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;#define WAKE_FF_MT&amp;nbsp; 0x08&lt;/P&gt;&lt;P&gt;#define WAKE_TRANS&amp;nbsp; 0x40&amp;nbsp; &lt;/P&gt;&lt;P&gt;#define IPOL_DEFAULT 0x00&lt;/P&gt;&lt;P&gt;#define PP_OD_DEFAULT 0x00&lt;/P&gt;&lt;P&gt;#define INT_EN_FF_MT&amp;nbsp; 0x04&lt;/P&gt;&lt;P&gt;#define INT_EN_TRANS&amp;nbsp; 0x20&lt;/P&gt;&lt;P&gt;#define INT_EN_ASLP&amp;nbsp; 0x80&lt;/P&gt;&lt;P&gt;#define INT_CFG_FF_MT&amp;nbsp; 0x04&lt;/P&gt;&lt;P&gt;#define INT_CFG_TRANS&amp;nbsp; 0x20&lt;/P&gt;&lt;P&gt;#define ASLP_COUNT_50_HZ_960_MS&amp;nbsp; 0x03&lt;/P&gt;&lt;P&gt;#define ELE&amp;nbsp; 0x80&lt;/P&gt;&lt;P&gt;#define OAE_MOTION&amp;nbsp; 0x40&lt;/P&gt;&lt;P&gt;#define XYZ_EFE 0x18&lt;/P&gt;&lt;P&gt;#define DBCNTM_MOTION&amp;nbsp; 0x00&lt;/P&gt;&lt;P&gt;#define THS_0_2_G&amp;nbsp; 0x0B&lt;/P&gt;&lt;P&gt;#define FF_MT_DEBOUNCE_50_HZ_20_MS&amp;nbsp; 0x0A&lt;/P&gt;&lt;P&gt;#define ELE&amp;nbsp; 0x10&lt;/P&gt;&lt;P&gt;#define XYZ_EFE 0x06&lt;/P&gt;&lt;P&gt;#define HPF_BYP 0x00&lt;/P&gt;&lt;P&gt;#define DBCNTM_TRANS&amp;nbsp; 0x00 &lt;/P&gt;&lt;P&gt;#define TRANS_THS_0_5_G&amp;nbsp; 0x05&lt;/P&gt;&lt;P&gt;#define TRANS_DEBOUNCE_50_HZ_20_MS&amp;nbsp; 0x03&lt;/P&gt;&lt;P&gt;//The SRC registers for clearing and reading status of interrupts&lt;/P&gt;&lt;P&gt;#define SYSMOD 0x0B&lt;/P&gt;&lt;P&gt;#define TRANSIENT_SRC 0x1E&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;#define FF_MT_SRC 0x16&amp;nbsp; &lt;/P&gt;&lt;P&gt;// Motion Detection registers&lt;/P&gt;&lt;P&gt;#define FF_MT_CFG&amp;nbsp; 0x15&lt;/P&gt;&lt;P&gt;#define FF_MT_SRC&amp;nbsp; 0x16&lt;/P&gt;&lt;P&gt;#define FF_MT_THS&amp;nbsp; 0x17&lt;/P&gt;&lt;P&gt;#define FF_MT_COUNT&amp;nbsp; 0x18&lt;/P&gt;&lt;P&gt;//Transient registers&lt;/P&gt;&lt;P&gt;#define TRANSIENT_CFG 0x1D&lt;/P&gt;&lt;P&gt;#define TRANSIENT_THS 0x1F&lt;/P&gt;&lt;P&gt;#define TRANSIENT_COUNT 0x20&lt;/P&gt;&lt;P&gt;#define INT_SOURCE&amp;nbsp; 0x0C&lt;/P&gt;&lt;P&gt;#define GSCALE 2 // Sets full-scale range to +/-2, 4, or 8g. Used to calc real g values.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/* Interrupt Status */&lt;/P&gt;&lt;P&gt;volatile unsigned int int_status1 = 0;&lt;/P&gt;&lt;P&gt;volatile unsigned int int_status2 = 0;&lt;/P&gt;&lt;P&gt;float threshX = 0.5;&lt;/P&gt;&lt;P&gt;float threshY = 0.3;&lt;/P&gt;&lt;P&gt;float threshZ = 0.5;&lt;/P&gt;&lt;P&gt;boolean accelConfgd = false;&lt;/P&gt;&lt;P&gt;boolean deviceSecurityEnabled = true;&lt;/P&gt;&lt;P&gt;int accelCount[3];&amp;nbsp; // Stores the 12-bit signed value&lt;/P&gt;&lt;P&gt;float initAccelG[3];&lt;/P&gt;&lt;P&gt;// Now we'll calculate the accleration value into actual g's&lt;/P&gt;&lt;P&gt;float accelG[3];&amp;nbsp; // Stores the real accel value in g's&lt;/P&gt;&lt;P&gt;int baudRate = 9600;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*==============================================================================&lt;/P&gt;&lt;P&gt; * SETUP()&lt;/P&gt;&lt;P&gt; *============================================================================*/&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Interrupt Service Routines&lt;/P&gt;&lt;P&gt;void int0_bh()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; int_status1 = 1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void int1_bh()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; int_status2 = 1;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;void setup() &lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Enable serial debug&lt;/P&gt;&lt;P&gt;&amp;nbsp; Serial.begin(baudRate);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.begin(); //Join the bus as a master&lt;/P&gt;&lt;P&gt;&amp;nbsp; initMMA8452(); //Test and intialize the MMA8452&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; // Attach Interrupts for accelerometer&lt;/P&gt;&lt;P&gt;&amp;nbsp; pinMode(2,OUTPUT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; pinMode(3,OUTPUT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; attachInterrupt(0, int0_bh, CHANGE);&lt;/P&gt;&lt;P&gt;&amp;nbsp; attachInterrupt(1, int1_bh, CHANGE);&amp;nbsp; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void readAndSaveAccelValues()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; memset(accelCount,0,sizeof(accelCount));&lt;/P&gt;&lt;P&gt;&amp;nbsp; readAccelData(accelCount);&amp;nbsp; // Read the x/y/z adc values &lt;/P&gt;&lt;P&gt;&amp;nbsp; for (int i = 0 ; i &amp;lt; 3 ; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; accelG[i] = (float) accelCount[i] / ((1&amp;lt;&amp;lt;12)/(2*GSCALE));&amp;nbsp; // get actual g value, this depends on scale being set&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&amp;nbsp; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void printAccelValues()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; Serial.print(accelG[0]);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Serial.print('|');&lt;/P&gt;&lt;P&gt;&amp;nbsp; Serial.print(accelG[1]);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Serial.print(':');&lt;/P&gt;&lt;P&gt;&amp;nbsp; Serial.println(accelG[2]);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*==============================================================================&lt;/P&gt;&lt;P&gt; * LOOP()&lt;/P&gt;&lt;P&gt; *============================================================================*/&lt;/P&gt;&lt;P&gt;void loop() &lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; static byte val = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; static byte val1 = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; static byte val2 = 0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; if (int_status1 &amp;gt; 0) {&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readRegisters(TRANSIENT_SRC, sizeof(byte), &amp;amp;val1);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readRegisters(INT_SOURCE, sizeof(byte), &amp;amp;val2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.print("TRANSIENT_SRC: ");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println(val1);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.print("IIIIINT_SOURCE1: ");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println(val2);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readRegisters(CTRL_REG4, sizeof(byte), &amp;amp;val);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.print("CTRL_REG4: ");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println(val);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readRegisters(CTRL_REG5, sizeof(byte), &amp;amp;val);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.print("CTRL_REG5: ");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println(val);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; readAndSaveAccelValues();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; printAccelValues();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int_status1=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; if (int_status2 &amp;gt; 0) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readRegisters(SYSMOD, sizeof(byte), &amp;amp;val);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readRegisters(INT_SOURCE, sizeof(byte), &amp;amp;val);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.print("SYSMOD: ");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println(val1);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.print("IIIINT_SOURCE2: ");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println(val2); &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int_status2=0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; }&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; delay(100);&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;/*==============================================================================&lt;/P&gt;&lt;P&gt; * ACCELEROMETER METHODS&lt;/P&gt;&lt;P&gt; *============================================================================*/&lt;/P&gt;&lt;P&gt;void readAccelData(int *destination)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; byte rawData[6];&amp;nbsp; // x/y/z accel register data stored here&lt;/P&gt;&lt;P&gt;&amp;nbsp; readRegisters(OUT_X_MSB, 6, rawData);&amp;nbsp; // Read the six raw data registers into data array&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Loop to calculate 12-bit ADC and g value for each axis&lt;/P&gt;&lt;P&gt;&amp;nbsp; for (int i = 0; i &amp;lt; 3 ; i++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int gCount = (rawData[i*2] &amp;lt;&amp;lt; 8) | rawData[(i*2)+1];&amp;nbsp; //Combine the two 8 bit registers into one 12-bit number&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; gCount &amp;gt;&amp;gt;= 4; //The registers are left align, here we right align the 12-bit integer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // If the number is negative, we have to make it so manually (no 12-bit data type)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (rawData[i*2] &amp;gt; 0x7F) {&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gCount = ~gCount + 1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gCount *= -1;&amp;nbsp; // Transform into negative 2's complement #&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; destination[i] = gCount; //Record this gCount into the 3 int array&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Initialize the MMA8452 registers &lt;/P&gt;&lt;P&gt;// See the many application notes for more info on setting all of these registers:&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;// &lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA8452Q"&gt;http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MMA8452Q&lt;/A&gt;&lt;/P&gt;&lt;P&gt;void initMMA8452()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; byte val = readRegister(WHO_AM_I);&amp;nbsp; // Read WHO_AM_I register&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (val == 0x2A) // WHO_AM_I should always be 0x2A&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println("M is online...");&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; else&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.print("Could not connect to MMA8452Q: 0x");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Serial.println(val, HEX);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; while(1) ; // Loop forever if communication doesn't happen&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; MMA8452Standby();&amp;nbsp; // Must be in standby to change registers&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; // Initialize GSCALE&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = GSCALE;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if (val &amp;gt; 8) val = 8; //Easy error check&lt;/P&gt;&lt;P&gt;&amp;nbsp; val &amp;gt;&amp;gt;= 2; // Neat trick, see page 22. 00 = 2G, 01 = 4A, 10 = 8G&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(XYZ_DATA_CFG, val);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (ASLP_12_5_HZ | ODR_50_HZ | LNOISE_DEFAULT | F_READ_DEFAULT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG1, val);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (ST_DEFAULT | RST_DEFAULT | SMODS_LOW_POW | SLPE | MODS_NORMAL_POW);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG2, val);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (WAKE_TRANS | 0x02 | PP_OD_DEFAULT);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG3, val);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//interrupt INT TRANS comes on pin 2&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = 0; //INT_CFG_TRANS;&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG5, val);&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = ASLP_COUNT_50_HZ_960_MS;&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(ASLP_COUNT, val); &lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (ELE | XYZ_EFE | HPF_BYP);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(TRANSIENT_CFG, val);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = 0; //(DBCNTM_TRANS | TRANS_THS_0_5_G);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(TRANSIENT_THS, val);&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = 0; //TRANS_DEBOUNCE_50_HZ_20_MS;&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(TRANSIENT_COUNT, val);&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; val = (INT_EN_TRANS);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG4, val);&lt;/P&gt;&lt;P&gt;------------------------------------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; MMA8452Active();&amp;nbsp; // Set to active to start reading&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Sets the MMA8452 to standby mode. It must be in standby to change most register settings&lt;/P&gt;&lt;P&gt;void MMA8452Standby()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; byte c = readRegister(CTRL_REG1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG1, c &amp;amp; ~(0x01)); //Clear the active bit to go into standby&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Sets the MMA8452 to active mode. Needs to be in this mode to output data&lt;/P&gt;&lt;P&gt;void MMA8452Active()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; byte c = readRegister(CTRL_REG1);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister(CTRL_REG1, c | 0x01); //Set the active bit to begin detection&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Read bytesToRead sequentially, starting at addressToRead into the dest byte array&lt;/P&gt;&lt;P&gt;void readRegisters(byte addressToRead, int bytesToRead, byte * dest)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.beginTransmission(MMA8452_ADDRESS);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.write(addressToRead);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.endTransmission(false); //endTransmission but keep the connection active&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.requestFrom(MMA8452_ADDRESS, bytesToRead); //Ask for bytes, once done, bus is released by default&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (Wire.available() &amp;lt; bytesToRead); //Hang out until we get the # of bytes we expect&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; for (int x = 0 ; x &amp;lt; bytesToRead ; x++) {&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; dest[x] = Wire.read();&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.endTransmission(true); //endTransmission but keep the connection active&amp;nbsp; &lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Read a single byte from addressToRead and return it as a byte&lt;/P&gt;&lt;P&gt;byte readRegister(byte addressToRead)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.beginTransmission(MMA8452_ADDRESS);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.write(addressToRead);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.endTransmission(false); //endTransmission but keep the connection active&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.requestFrom(MMA8452_ADDRESS, 1); //Ask for 1 byte, once done, bus is released by default&lt;/P&gt;&lt;P&gt;&amp;nbsp; while(!Wire.available()) ; //Wait for the data to come back&lt;/P&gt;&lt;P&gt;&amp;nbsp; return Wire.read(); //Return this one byte&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;// Writes a single byte (dataToWrite) into addressToWrite&lt;/P&gt;&lt;P&gt;void writeRegister(byte addressToWrite, byte dataToWrite)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.beginTransmission(MMA8452_ADDRESS);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.write(addressToWrite);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.write(dataToWrite);&lt;/P&gt;&lt;P&gt;&amp;nbsp; Wire.endTransmission(); //Stop transmitting&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;//------------------------------------------------------------------------------------------------------------------------------------------------//&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Sree&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 05 Jan 2014 14:05:01 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282627#M590</guid>
      <dc:creator>sreejithchandra</dc:creator>
      <dc:date>2014-01-05T14:05:01Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8452 interrupt stays high forever</title>
      <link>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282628#M591</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Was there a resolution to this issue? I am having a similar issue with the MMA8652: after first transient event I get repeated interrupts despite reading the transient source register.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 06 Mar 2015 16:42:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282628#M591</guid>
      <dc:creator>haroldmccabe</dc:creator>
      <dc:date>2015-03-06T16:42:43Z</dc:date>
    </item>
    <item>
      <title>Re: MMA8452 interrupt stays high forever</title>
      <link>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282629#M592</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Harold,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Did you configure the High Pass Filter? In fact, if you don't use it, TRANSIENT event is always set to "High" because of the 1g gravity earth acceleration.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here a sample of MMA8652FC configuration for motion detection.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="jive_macro_code jive_text_macro _jivemacro_uid_14460240601378823" data-renderedposition="134_8_1232_656" jivemacro_uid="_14460240601378823"&gt;&lt;P&gt;#define MMA8652FC_CTRL_REG1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2A&lt;/P&gt;&lt;P&gt;#define MMA8652FC_CTRL_REG2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2B&lt;/P&gt;&lt;P&gt;#define MMA8652FC_CTRL_REG3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2C&lt;/P&gt;&lt;P&gt;#define MMA8652FC_CTRL_REG4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2D&lt;/P&gt;&lt;P&gt;#define MMA8652FC_CTRL_REG5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x2E&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MMA8652FC_TRANSIENT_CFG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1D&lt;/P&gt;&lt;P&gt;#define MMA8652FC_TRANSIENT_SRC&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1E&lt;/P&gt;&lt;P&gt;#define MMA8652FC_TRANSIENT_THS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x1F&lt;/P&gt;&lt;P&gt;#define MMA8652FC_TRANSIENT_COUNT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x20&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MMA8652FC_HP_FILTER_CUTOFF&amp;nbsp;&amp;nbsp; 0x0F&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;#define MMA8652FC_WHO_AM_I&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x0D&lt;/P&gt;&lt;P&gt;#define MMA8652FC_WHO_AM_I_VAL&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x4A&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;bool MMA8652FC::init(uint8_t __u8_7BitAddress)&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; bool __b_result=false;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint8_t __u8_temp=0xFF;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _u8_I2CAddress=__u8_7BitAddress&amp;lt;&amp;lt;1;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bRead(MMA8652FC_WHO_AM_I,&amp;amp;__u8_temp,1)) {&amp;nbsp;&amp;nbsp;&amp;nbsp; //Check presence of the sensor&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(__u8_temp == MMA8652FC_WHO_AM_I_VAL) {&amp;nbsp;&amp;nbsp; //Check Sensor ID answer&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bWrite(MMA8652FC_CTRL_REG3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,0x02&amp;nbsp;&amp;nbsp; )) //Wake from Transient interrupt&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bWrite(MMA8652FC_CTRL_REG4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,0x20&amp;nbsp;&amp;nbsp; )) //Enable Transient Interrupt&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bWrite(MMA8652FC_CTRL_REG5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,0x20&amp;nbsp;&amp;nbsp; )) //Interrupt on INT1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bWrite(MMA8652FC_TRANSIENT_CFG&amp;nbsp;&amp;nbsp; ,0x1E&amp;nbsp;&amp;nbsp; )) //Enable latchedevent flag and transient detection on all 3 axis&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bWrite(MMA8652FC_TRANSIENT_THS&amp;nbsp;&amp;nbsp; ,0x02&amp;nbsp;&amp;nbsp; )) //Set transient threshold to 0.126mg (2x0.063)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bWrite(MMA8652FC_TRANSIENT_COUNT ,0x04&amp;nbsp;&amp;nbsp; )) //Set transient count&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bWrite(MMA8652FC_HP_FILTER_CUTOFF,0x03&amp;nbsp;&amp;nbsp; )) //Select HPF cut-off frequency&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(bWrite(MMA8652FC_CTRL_REG1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ,0x21&amp;nbsp;&amp;nbsp; )) { //Set ODR to 200Hz &amp;amp; active mode&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __b_result= true;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; return __b_result;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anthony&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 28 Oct 2015 09:21:24 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/MMA8452-interrupt-stays-high-forever/m-p/282629#M592</guid>
      <dc:creator>anthonyduhamel</dc:creator>
      <dc:date>2015-10-28T09:21:24Z</dc:date>
    </item>
  </channel>
</rss>

