<?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: mma8453 accelerometer - interrupt always active in Sensors</title>
    <link>https://community.nxp.com/t5/Sensors/mma8453-accelerometer-interrupt-always-active/m-p/257348#M424</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm working with the same accelerometer (MMA8453) and i'm expecting exactly the same issue. I already tried a simple code where i'm reading the accelerometer values every time a flag is triggered in the interruption. After it I read the interruption register to clean the interrupt flag. After some time working, my accelerometer stops working and, using a digital analizer, I saw it was the interruption pin that was blocked in low.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;Here is some parts of the code where you can see how it was implemented. I already tried to enable the Transient mode but stills not working properly.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;```&amp;nbsp;&lt;/P&gt;&lt;PRE style="color: #000000;"&gt;/**&amp;nbsp; * configure&amp;nbsp; * @brief Accelerometer configuration.&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; To configure the MMA8453 set it to Standby mode, perform the&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; modifications and change it back to Active mode.&amp;nbsp; *&amp;nbsp; *&amp;nbsp; @param none&amp;nbsp; *&amp;nbsp; *&amp;nbsp; @return none&amp;nbsp; *&amp;nbsp; */ void CMMA8453::configure() {&amp;nbsp; /* MMA8453 configuration for Data Ready mode */
 /* Set the module in standby mode to configure it */
 this-&amp;gt;sleep();

 /* Set full-scale range to 2G */
 this-&amp;gt;writeByte(REG_XYZ_DATA_CFG_ADDRESS, REG_RANGE_2G_VALUE);

 /* Configure Transient */
 this-&amp;gt;writeByte(REG_TRANSIENT_CFG_ADDRESS, REG_TRANSIENT_ELE_VALUE);

 /* Data Ready mode */
 this-&amp;gt;writeByte(REG_CTRL_REG2_ADDRESS, REG_CTRL_REG2_NORMAL_MODE_VALUE);
 /* Set open drain on interrupt pad */
 this-&amp;gt;writeByte(REG_CTRL_REG3_ADDRESS, REG_CTRL_REG3_OPEN_DRAIN_WAKE_TRANSIENT_VALUE);
 /* Enable data ready interrupt */
 this-&amp;gt;writeByte(REG_CTRL_REG4_ADDRESS, REG_CTRL_REG4_DATA_READY_TRANSIENT_INT_EN_VALUE);
 /* Route interrupt to INT1 pin */
 this-&amp;gt;writeByte(REG_CTRL_REG5_ADDRESS, REG_CTRL_REG5_DATA_READY_INT2_VALUE);

 /* Set the module in active mode to start collecting data */
 this-&amp;gt;wakeUp(); }

/**
 * hasNewData
 * @brief Check if new accelerometer data is available
 *
 * @param none
 *
 * @return true if new data is available
 * false if new data is not available
 *
 **/
bool
CMMA8453::hasNewData()
{
 /* Request interrupt source */
 uint8_t interruptSource = 0;
 uint8_t interruptTransient = 0;

 if (true == this-&amp;gt;has_interrupt_occured ) {

 /* Clear interrupt flags*/
 this-&amp;gt;readByte(REG_TRANSIENT_SRC_ADDRESS, &amp;amp;interruptTransient);
 this-&amp;gt;readByte(REG_INT_SOURCE_ADDRESS, &amp;amp;interruptSource);

 /* Handle interrupt data is ready */
 if ((interruptSource &amp;amp; REG_SRC_DATA_READY_VALUE) == REG_SRC_DATA_READY_VALUE) {
 /* Signal that new data is available */
 return true;
 }
 }
 return false;

}


/**
 * sleep
 * @brief Put the accelerometer in standby mode
 *
 * @param none
 *
 * @return none
 *
 **/
void
CMMA8453::sleep()
{
 /* Set output data rate (ODR) to 6.25Hz and Standby mode */
 this-&amp;gt;writeByte(REG_CTRL_REG1_ADDRESS, (REG_CTRL_REG1_6Hz_VALUE | REG_CTRL_REG1_STANDBY_VALUE));
}


/**
 * wakeUp
 * @brief Put the accelerometer in active mode
 *
 * @param none
 *
 * @return none
 *
 **/
void
CMMA8453::wakeUp()
{
 /* Set output data rate (ODR) to 6.25Hz and Active mode */
 this-&amp;gt;writeByte(REG_CTRL_REG1_ADDRESS, (REG_CTRL_REG1_6Hz_VALUE | REG_CTRL_REG1_ACTIVE_VALUE));
}


/**
 * interruptHandler
 * @brief Handles the Interrupt by checking the interrupt source
 * and acts accordingly.
 *
 * @param none
 *
 * @return none
 *
 **/
void
CMMA8453::interruptHandler()
{
 /* Disable Interrupt */
 nrf_drv_gpiote_in_event_disable(CGPIO::INT1_ACC);

 this-&amp;gt;has_interrupt_occured = true;

 /* Enable Interrupt */
 nrf_drv_gpiote_in_event_enable(CGPIO::INT1_ACC, true);
}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 31 May 2017 16:31:49 GMT</pubDate>
    <dc:creator>tramela</dc:creator>
    <dc:date>2017-05-31T16:31:49Z</dc:date>
    <item>
      <title>mma8453 accelerometer - interrupt always active</title>
      <link>https://community.nxp.com/t5/Sensors/mma8453-accelerometer-interrupt-always-active/m-p/257346#M422</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hey freescalers,&lt;/P&gt;&lt;P&gt;I'm using mma8453 accelerometer in a current project I'm working on.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm setting the interrupt INT 1 to be active low (once setting I can see in the oscilloscope that the INT 1 line is high).&lt;/P&gt;&lt;P&gt;As soon as I finish the rest of the configurations I detect an interrupt, and to clear the interrupt I read the register INT_SOURCE, but I read all 0's, ie. no interrupt to be handled. &lt;/P&gt;&lt;P&gt;looking at the oscilloscope I can see the INT 1 line is now low. and stays low.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wonder what might be the cause for that and how can I force clean the interrupt line?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance,&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Feb 2026 21:21:22 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/mma8453-accelerometer-interrupt-always-active/m-p/257346#M422</guid>
      <dc:creator>bergo</dc:creator>
      <dc:date>2026-02-03T21:21:22Z</dc:date>
    </item>
    <item>
      <title>Re: mma8453 accelerometer - interrupt always active</title>
      <link>https://community.nxp.com/t5/Sensors/mma8453-accelerometer-interrupt-always-active/m-p/257347#M423</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Bergo,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It would be fine to see your complete source code and schematic.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Anyway, t&lt;SPAN style="font-family: 'Arial','sans-serif'; font-size: 10pt;"&gt;he interrupts are deasserted by reading the appropriate status register for the embedded functions or reading the X, Y and Z data for the DRDY and FIFO.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Arial','sans-serif'; font-size: 10pt;"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'Arial','sans-serif'; font-size: 10pt;"&gt;Tomas&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 27 May 2013 10:37:55 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/mma8453-accelerometer-interrupt-always-active/m-p/257347#M423</guid>
      <dc:creator>TomasVaverka</dc:creator>
      <dc:date>2013-05-27T10:37:55Z</dc:date>
    </item>
    <item>
      <title>Re: mma8453 accelerometer - interrupt always active</title>
      <link>https://community.nxp.com/t5/Sensors/mma8453-accelerometer-interrupt-always-active/m-p/257348#M424</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm working with the same accelerometer (MMA8453) and i'm expecting exactly the same issue. I already tried a simple code where i'm reading the accelerometer values every time a flag is triggered in the interruption. After it I read the interruption register to clean the interrupt flag. After some time working, my accelerometer stops working and, using a digital analizer, I saw it was the interruption pin that was blocked in low.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;BR /&gt;Here is some parts of the code where you can see how it was implemented. I already tried to enable the Transient mode but stills not working properly.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;```&amp;nbsp;&lt;/P&gt;&lt;PRE style="color: #000000;"&gt;/**&amp;nbsp; * configure&amp;nbsp; * @brief Accelerometer configuration.&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; To configure the MMA8453 set it to Standby mode, perform the&amp;nbsp; *&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; modifications and change it back to Active mode.&amp;nbsp; *&amp;nbsp; *&amp;nbsp; @param none&amp;nbsp; *&amp;nbsp; *&amp;nbsp; @return none&amp;nbsp; *&amp;nbsp; */ void CMMA8453::configure() {&amp;nbsp; /* MMA8453 configuration for Data Ready mode */
 /* Set the module in standby mode to configure it */
 this-&amp;gt;sleep();

 /* Set full-scale range to 2G */
 this-&amp;gt;writeByte(REG_XYZ_DATA_CFG_ADDRESS, REG_RANGE_2G_VALUE);

 /* Configure Transient */
 this-&amp;gt;writeByte(REG_TRANSIENT_CFG_ADDRESS, REG_TRANSIENT_ELE_VALUE);

 /* Data Ready mode */
 this-&amp;gt;writeByte(REG_CTRL_REG2_ADDRESS, REG_CTRL_REG2_NORMAL_MODE_VALUE);
 /* Set open drain on interrupt pad */
 this-&amp;gt;writeByte(REG_CTRL_REG3_ADDRESS, REG_CTRL_REG3_OPEN_DRAIN_WAKE_TRANSIENT_VALUE);
 /* Enable data ready interrupt */
 this-&amp;gt;writeByte(REG_CTRL_REG4_ADDRESS, REG_CTRL_REG4_DATA_READY_TRANSIENT_INT_EN_VALUE);
 /* Route interrupt to INT1 pin */
 this-&amp;gt;writeByte(REG_CTRL_REG5_ADDRESS, REG_CTRL_REG5_DATA_READY_INT2_VALUE);

 /* Set the module in active mode to start collecting data */
 this-&amp;gt;wakeUp(); }

/**
 * hasNewData
 * @brief Check if new accelerometer data is available
 *
 * @param none
 *
 * @return true if new data is available
 * false if new data is not available
 *
 **/
bool
CMMA8453::hasNewData()
{
 /* Request interrupt source */
 uint8_t interruptSource = 0;
 uint8_t interruptTransient = 0;

 if (true == this-&amp;gt;has_interrupt_occured ) {

 /* Clear interrupt flags*/
 this-&amp;gt;readByte(REG_TRANSIENT_SRC_ADDRESS, &amp;amp;interruptTransient);
 this-&amp;gt;readByte(REG_INT_SOURCE_ADDRESS, &amp;amp;interruptSource);

 /* Handle interrupt data is ready */
 if ((interruptSource &amp;amp; REG_SRC_DATA_READY_VALUE) == REG_SRC_DATA_READY_VALUE) {
 /* Signal that new data is available */
 return true;
 }
 }
 return false;

}


/**
 * sleep
 * @brief Put the accelerometer in standby mode
 *
 * @param none
 *
 * @return none
 *
 **/
void
CMMA8453::sleep()
{
 /* Set output data rate (ODR) to 6.25Hz and Standby mode */
 this-&amp;gt;writeByte(REG_CTRL_REG1_ADDRESS, (REG_CTRL_REG1_6Hz_VALUE | REG_CTRL_REG1_STANDBY_VALUE));
}


/**
 * wakeUp
 * @brief Put the accelerometer in active mode
 *
 * @param none
 *
 * @return none
 *
 **/
void
CMMA8453::wakeUp()
{
 /* Set output data rate (ODR) to 6.25Hz and Active mode */
 this-&amp;gt;writeByte(REG_CTRL_REG1_ADDRESS, (REG_CTRL_REG1_6Hz_VALUE | REG_CTRL_REG1_ACTIVE_VALUE));
}


/**
 * interruptHandler
 * @brief Handles the Interrupt by checking the interrupt source
 * and acts accordingly.
 *
 * @param none
 *
 * @return none
 *
 **/
void
CMMA8453::interruptHandler()
{
 /* Disable Interrupt */
 nrf_drv_gpiote_in_event_disable(CGPIO::INT1_ACC);

 this-&amp;gt;has_interrupt_occured = true;

 /* Enable Interrupt */
 nrf_drv_gpiote_in_event_enable(CGPIO::INT1_ACC, true);
}&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 31 May 2017 16:31:49 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/mma8453-accelerometer-interrupt-always-active/m-p/257348#M424</guid>
      <dc:creator>tramela</dc:creator>
      <dc:date>2017-05-31T16:31:49Z</dc:date>
    </item>
    <item>
      <title>Re: mma8453 accelerometer - interrupt always active</title>
      <link>https://community.nxp.com/t5/Sensors/mma8453-accelerometer-interrupt-always-active/m-p/257349#M425</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I forgot to send the defines:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;MMA8453_ADDRESS = 0x1C;&lt;/P&gt;&lt;P&gt;REG_CTRL_REG1_ADDRESS = 0x2A;&lt;BR /&gt;REG_CTRL_REG2_ADDRESS = 0x2B;&lt;BR /&gt;REG_CTRL_REG3_ADDRESS = 0x2C;&lt;BR /&gt;REG_CTRL_REG4_ADDRESS = 0x2D;&lt;BR /&gt;REG_CTRL_REG5_ADDRESS = 0x2E;&lt;/P&gt;&lt;P&gt;REG_CTRL_REG1_6Hz_VALUE = 0x30;&lt;BR /&gt;REG_CTRL_REG2_NORMAL_MODE_VALUE = 0x00;&lt;/P&gt;&lt;P&gt;REG_CTRL_REG3_OPEN_DRAIN_WAKE_TRANSIENT_VALUE = 0x41;&lt;/P&gt;&lt;P&gt;REG_CTRL_REG4_DATA_READY_TRANSIENT_INT_EN_VALUE = 0x01;&lt;/P&gt;&lt;P&gt;REG_CTRL_REG5_ALL_INT_ROUTED_INT1_VALUE = 0xBD;&lt;/P&gt;&lt;P&gt;REG_TRANSIENT_CFG_ADDRESS = 0x1D;&lt;/P&gt;&lt;P&gt;REG_TRANSIENT_SRC_ADDRESS = 0x1E;&lt;/P&gt;&lt;P&gt;REG_INT_SOURCE_ADDRESS = 0x0C&lt;/P&gt;&lt;P&gt;REG_SRC_DATA_READY_VALUE = 0x01;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 31 May 2017 16:41:23 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/mma8453-accelerometer-interrupt-always-active/m-p/257349#M425</guid>
      <dc:creator>tramela</dc:creator>
      <dc:date>2017-05-31T16:41:23Z</dc:date>
    </item>
  </channel>
</rss>

