<?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>Sensors中的主题 mma8451&amp; FIFO buffer</title>
    <link>https://community.nxp.com/t5/Sensors/mma8451-FIFO-buffer/m-p/801082#M5162</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 MMA8451 to make a tilt sensor.&lt;/P&gt;&lt;P&gt;Everything is Arduino based using the classic ATmega328P.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My intention is to use the FIFO buffer to get it full with 32 samples @ 800HZ in active mode without any sleep function.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the setup function I set the register like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG2, 0x40); // reset&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (readRegister8(MMA8451_REG_CTRL_REG2) &amp;amp; 0x40);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG1, 0x00);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Standby mode (DEACTIVE) @ 800Hz&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_FIFO_SETUP, 0x60);&amp;nbsp;&amp;nbsp;&amp;nbsp; // FIFO in circular buffer. watermark set to 32&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG2, 0x02);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // High resolution&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG3, 0x02);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // push-pull active-high&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG4, 0x40);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // FIFO interrupt enabled&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG5, 0x40);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Interrupt is routed to INT1 pin&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG1, 0x01);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Active mode and reduced noise mode. ODR = 800Hz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; attachInterrupt(0, INT0_ISR, RISING);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // for the accelerometer FIFO register reading&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and at the beginning I have the interrupt where I would have to read all the 32 samples.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void INT0_ISR()&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; // For an I2C bit rate of 400 kHz, FIFORead(32) + 3 μs = 4.878 ms. &lt;BR /&gt;&amp;nbsp; for (byte i=1; i&amp;lt;=OSR; i++)&lt;BR /&gt;&amp;nbsp; { &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read the 'raw' data in 14-bit counts&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readAcceleration(&amp;amp;x, &amp;amp;y, &amp;amp;z);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But anything works because I'm not able to get the buffer empty reading all the values.&lt;/P&gt;&lt;P&gt;Basically the interrupt pin stays high forever.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Even I tried to clear the flag interrupt without success&lt;/P&gt;&lt;P&gt;&amp;nbsp; readRegister8(MMA8451_REG_INT_SOURCE);&lt;BR /&gt;&amp;nbsp; readRegister8(MMA8451_REG_FIFO_STATUS);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then anyone is able to help me ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance to everyone who spends time for this.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 03 Feb 2026 22:20:31 GMT</pubDate>
    <dc:creator>alessio31183</dc:creator>
    <dc:date>2026-02-03T22:20:31Z</dc:date>
    <item>
      <title>mma8451&amp; FIFO buffer</title>
      <link>https://community.nxp.com/t5/Sensors/mma8451-FIFO-buffer/m-p/801082#M5162</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 MMA8451 to make a tilt sensor.&lt;/P&gt;&lt;P&gt;Everything is Arduino based using the classic ATmega328P.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My intention is to use the FIFO buffer to get it full with 32 samples @ 800HZ in active mode without any sleep function.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the setup function I set the register like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG2, 0x40); // reset&lt;/P&gt;&lt;P&gt;&amp;nbsp; while (readRegister8(MMA8451_REG_CTRL_REG2) &amp;amp; 0x40);&lt;/P&gt;&lt;P&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG1, 0x00);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Standby mode (DEACTIVE) @ 800Hz&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_FIFO_SETUP, 0x60);&amp;nbsp;&amp;nbsp;&amp;nbsp; // FIFO in circular buffer. watermark set to 32&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG2, 0x02);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // High resolution&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG3, 0x02);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // push-pull active-high&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG4, 0x40);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // FIFO interrupt enabled&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG5, 0x40);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Interrupt is routed to INT1 pin&lt;BR /&gt;&amp;nbsp; writeRegister8(MMA8451_REG_CTRL_REG1, 0x01);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Active mode and reduced noise mode. ODR = 800Hz&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; attachInterrupt(0, INT0_ISR, RISING);&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // for the accelerometer FIFO register reading&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;and at the beginning I have the interrupt where I would have to read all the 32 samples.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;void INT0_ISR()&lt;BR /&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp; // For an I2C bit rate of 400 kHz, FIFORead(32) + 3 μs = 4.878 ms. &lt;BR /&gt;&amp;nbsp; for (byte i=1; i&amp;lt;=OSR; i++)&lt;BR /&gt;&amp;nbsp; { &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Read the 'raw' data in 14-bit counts&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; readAcceleration(&amp;amp;x, &amp;amp;y, &amp;amp;z);&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But anything works because I'm not able to get the buffer empty reading all the values.&lt;/P&gt;&lt;P&gt;Basically the interrupt pin stays high forever.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Even I tried to clear the flag interrupt without success&lt;/P&gt;&lt;P&gt;&amp;nbsp; readRegister8(MMA8451_REG_INT_SOURCE);&lt;BR /&gt;&amp;nbsp; readRegister8(MMA8451_REG_FIFO_STATUS);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Then anyone is able to help me ?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance to everyone who spends time for this.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 03 Feb 2026 22:20:31 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/mma8451-FIFO-buffer/m-p/801082#M5162</guid>
      <dc:creator>alessio31183</dc:creator>
      <dc:date>2026-02-03T22:20:31Z</dc:date>
    </item>
    <item>
      <title>Re: mma8451&amp; FIFO buffer</title>
      <link>https://community.nxp.com/t5/Sensors/mma8451-FIFO-buffer/m-p/801083#M5163</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Alessio,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would recommend you to take a look at my &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-173015"&gt;example code&lt;/A&gt;.&amp;nbsp;It is written for the FXLS8471, but it should be identical for the MMA8451Q.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I hope it helps.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Best regards,&lt;/P&gt;&lt;P&gt;Tomas&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 18 Dec 2018 11:16:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/Sensors/mma8451-FIFO-buffer/m-p/801083#M5163</guid>
      <dc:creator>TomasVaverka</dc:creator>
      <dc:date>2018-12-18T11:16:39Z</dc:date>
    </item>
  </channel>
</rss>

