mma8451& FIFO buffer

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

mma8451& FIFO buffer

1,617件の閲覧回数
alessio31183
Contributor I

Hi,

I'm using the MMA8451 to make a tilt sensor.

Everything is Arduino based using the classic ATmega328P.

My intention is to use the FIFO buffer to get it full with 32 samples @ 800HZ in active mode without any sleep function.

In the setup function I set the register like this:

  writeRegister8(MMA8451_REG_CTRL_REG2, 0x40); // reset

  while (readRegister8(MMA8451_REG_CTRL_REG2) & 0x40);

  writeRegister8(MMA8451_REG_CTRL_REG1, 0x00);     // Standby mode (DEACTIVE) @ 800Hz
  writeRegister8(MMA8451_REG_FIFO_SETUP, 0x60);    // FIFO in circular buffer. watermark set to 32
  writeRegister8(MMA8451_REG_CTRL_REG2, 0x02);     // High resolution
  writeRegister8(MMA8451_REG_CTRL_REG3, 0x02);     // push-pull active-high
  writeRegister8(MMA8451_REG_CTRL_REG4, 0x40);     // FIFO interrupt enabled
  writeRegister8(MMA8451_REG_CTRL_REG5, 0x40);     // Interrupt is routed to INT1 pin
  writeRegister8(MMA8451_REG_CTRL_REG1, 0x01);     // Active mode and reduced noise mode. ODR = 800Hz

  attachInterrupt(0, INT0_ISR, RISING);      // for the accelerometer FIFO register reading

and at the beginning I have the interrupt where I would have to read all the 32 samples.

void INT0_ISR()
{

  // For an I2C bit rate of 400 kHz, FIFORead(32) + 3 μs = 4.878 ms.
  for (byte i=1; i<=OSR; i++)
  {
    // Read the 'raw' data in 14-bit counts
    readAcceleration(&x, &y, &z);

  }

But anything works because I'm not able to get the buffer empty reading all the values.

Basically the interrupt pin stays high forever.

Even I tried to clear the flag interrupt without success

  readRegister8(MMA8451_REG_INT_SOURCE);
  readRegister8(MMA8451_REG_FIFO_STATUS);

Then anyone is able to help me ?

Thanks in advance to everyone who spends time for this.

ラベル(1)
0 件の賞賛
1 返信

1,370件の閲覧回数
TomasVaverka
NXP TechSupport
NXP TechSupport

Hi Alessio,

I would recommend you to take a look at my example code. It is written for the FXLS8471, but it should be identical for the MMA8451Q.

I hope it helps.

Best regards,

Tomas

0 件の賞賛
%3CLINGO-SUB%20id%3D%22lingo-sub-801082%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3Emma8451%26amp%3BFIFO%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-801082%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%3CP%3EMMA8451%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E5%82%BE%E3%81%8D%E3%82%BB%E3%83%B3%E3%82%B5%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AF%E5%8F%A4%E5%85%B8%E7%9A%84%E3%81%AA%20ATmega328P%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%20Arduino%20%E3%83%99%E3%83%BC%E3%82%B9%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AE%E6%84%8F%E5%9B%B3%E3%81%AF%E3%80%81%E3%82%B9%E3%83%AA%E3%83%BC%E3%83%97%E6%A9%9F%E8%83%BD%E3%81%AA%E3%81%97%E3%81%A7%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%20%E3%83%A2%E3%83%BC%E3%83%89%E3%81%A7%20FIFO%20%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%92%2032%20%E5%80%8B%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%20%40%20800HZ%20%E3%81%A7%E3%81%84%E3%81%A3%E3%81%B1%E3%81%84%E3%81%AB%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E9%96%A2%E6%95%B0%E3%81%A7%E3%81%AF%E3%80%81%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%82%92%E6%AC%A1%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3EwriteRegister8(MMA8451_REG_CTRL_REG2%2C%200x40)%3B%20%2F%2F%20%E3%83%AA%E3%82%BB%E3%83%83%E3%83%88%3C%2FP%3E%3CP%3Ewhile%20(readRegister8(MMA8451_REG_CTRL_REG2)%20%26amp%3B%200x40)%3B%3C%2FP%3E%3CP%3EwriteRegister8(MMA8451_REG_CTRL_REG1%2C%200x00)%3B%20%2F%2F%20%E3%82%B9%E3%82%BF%E3%83%B3%E3%83%90%E3%82%A4%E3%83%A2%E3%83%BC%E3%83%89%EF%BC%88DEACTIVE%EF%BC%89%40%20800Hz%3CBR%20%2F%3E%20writeRegister8(MMA8451_REG_FIFO_SETUP%2C%200x60)%3B%20%2F%2F%20%E5%BE%AA%E7%92%B0%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E5%86%85%E3%81%AEFIFO%E3%80%82%E9%80%8F%E3%81%8B%E3%81%97%E3%82%9232%E3%81%AB%E8%A8%AD%E5%AE%9A%3CBR%20%2F%3EwriteRegister8(MMA8451_REG_CTRL_REG2%2C%200x02)%3B%20%2F%2F%20%E9%AB%98%E8%A7%A3%E5%83%8F%E5%BA%A6%3CBR%20%2F%3EwriteRegister8(MMA8451_REG_CTRL_REG3%2C%200x02)%3B%20%2F%2F%20%E3%83%97%E3%83%83%E3%82%B7%E3%83%A5%E3%83%97%E3%83%AB%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%83%8F%E3%82%A4%3CBR%20%2F%3EwriteRegister8(MMA8451_REG_CTRL_REG4%2C%200x40)%3B%20%2F%2F%20FIFO%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E6%9C%89%E5%8A%B9%3CBR%20%2F%3EwriteRegister8(MMA8451_REG_CTRL_REG5%2C%200x40)%3B%20%2F%2F%20%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%AFINT1%E3%83%94%E3%83%B3%E3%81%AB%E3%83%AB%E3%83%BC%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%3CBR%20%2F%3EwriteRegister8(MMA8451_REG_CTRL_REG1%2C%200x01)%3B%20%2F%2F%20%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%83%A2%E3%83%BC%E3%83%89%E3%81%A8%E3%83%8E%E3%82%A4%E3%82%BA%E4%BD%8E%E6%B8%9B%E3%83%A2%E3%83%BC%E3%83%89%E3%80%82ODR%20%3D%20800Hz%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EattachInterrupt(0%2C%20INT0_ISR%2C%20RISING)%3B%20%2F%2F%20%E5%8A%A0%E9%80%9F%E5%BA%A6%E3%82%BB%E3%83%B3%E3%82%B5FIFO%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF%E3%81%AE%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E7%94%A8%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%9D%E3%81%97%E3%81%A6%E3%80%81%E6%9C%80%E5%88%9D%E3%81%AB%E3%80%8132%20%E5%80%8B%E3%81%AE%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%81%99%E3%81%B9%E3%81%A6%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3Evoid%20INT0_ISR()%3CBR%20%2F%3E%20%7B%3C%2FP%3E%3CP%3E%2F%2F%20I2C%E3%83%93%E3%83%83%E3%83%88%E3%83%AC%E3%83%BC%E3%83%88%E3%81%8C400kHz%E3%81%AE%E5%A0%B4%E5%90%88%E3%80%81FIFORead(32)%20%2B%203%CE%BCs%20%3D%204.878ms%E3%80%82%3CBR%20%2F%3E%20(%E3%83%90%E3%82%A4%E3%83%88%20i%3D1%3B%20i%26lt%3B%3DOSR%3B%20i%2B%2B)%20%E3%81%AE%E5%A0%B4%E5%90%88%3CBR%20%2F%3E%7B%3CBR%20%2F%3E%20%2F%2F%2014%E3%83%93%E3%83%83%E3%83%88%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%81%A7%E3%80%8C%E7%94%9F%E3%81%AE%E3%80%8D%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8B%3CBR%20%2F%3E%E5%8A%A0%E9%80%9F%E5%BA%A6%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%81%BE%E3%81%99(%26amp%3Bx%2C%20%26amp%3By%2C%20%26amp%3Bz)%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%20%7D%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%97%E3%81%8B%E3%81%97%E3%80%81%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E5%80%A4%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%81%A3%E3%81%A6%E3%83%90%E3%83%83%E3%83%95%E3%82%A1%E3%82%92%E7%A9%BA%E3%81%AB%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84%E3%81%AE%E3%81%A7%E3%80%81%E4%BD%95%E3%81%A7%E3%82%82%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AB%E3%80%81%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%83%94%E3%83%B3%E3%81%AF%E6%B0%B8%E4%B9%85%E3%81%AB%E3%83%8F%E3%82%A4%E3%81%AE%E3%81%BE%E3%81%BE%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%83%95%E3%83%A9%E3%82%B0%E5%89%B2%E3%82%8A%E8%BE%BC%E3%81%BF%E3%82%92%E3%82%AF%E3%83%AA%E3%82%A2%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%9F%E3%81%8C%E6%88%90%E5%8A%9F%E3%81%97%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F%3C%2FP%3E%3CP%3E%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF8%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%81%BE%E3%81%99(MMA8451_REG_INT_SOURCE)%3B%3CBR%20%2F%3E%E3%83%AC%E3%82%B8%E3%82%B9%E3%82%BF8%E3%82%92%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%81%BE%E3%81%99(MMA8451_REG_FIFO_STATUS)%3B%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%A7%E3%81%AF%E8%AA%B0%E3%81%8B%E3%81%8C%E7%A7%81%E3%82%92%E5%8A%A9%E3%81%91%E3%81%A6%E3%81%8F%E3%82%8C%E3%82%8B%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%93%E3%82%8C%E3%81%AB%E6%99%82%E9%96%93%E3%82%92%E8%B2%BB%E3%82%84%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%A3%E3%81%9F%E7%9A%86%E6%A7%98%E3%81%AB%E3%80%81%E5%BF%83%E3%82%88%E3%82%8A%E6%84%9F%E8%AC%9D%E7%94%B3%E3%81%97%E4%B8%8A%E3%81%92%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-801082%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3E%E5%8A%A0%E9%80%9F%E5%BA%A6%E3%82%BB%E3%83%B3%E3%82%B5%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-801083%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20mma8451%26amp%3B%20FIFO%20buffer%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-801083%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%26lt%3Bmeta%20http-equiv%3D%22Content-Type%22%20content%3D%22text%2Fhtml%3B%20charset%3Dutf-8%22%20%2F%26gt%3B%0A%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%E3%82%A2%E3%83%AC%E3%83%83%E3%82%B7%E3%82%AA%E3%81%95%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AE%3CA%20_jive_internal%3D%22true%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fdocs%2FDOC-173015%22%20target%3D%22_blank%22%3E%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89%3C%2FA%3E%E3%82%92%E3%81%94%E8%A6%A7%E3%81%AB%E3%81%AA%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E3%81%8A%E5%8B%A7%E3%82%81%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%20FXLS8471%20%E7%94%A8%E3%81%AB%E6%9B%B8%E3%81%8B%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81MMA8451Q%20%E3%81%A7%E3%82%82%E5%90%8C%E3%81%98%E3%81%AF%E3%81%9A%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%81%8A%E5%BD%B9%E3%81%AB%E7%AB%8B%E3%81%A6%E3%82%8C%E3%81%B0%E5%B9%B8%E3%81%84%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%83%88%E3%83%BC%E3%83%9E%E3%82%B9%3C%2FP%3E%3C%2FLINGO-BODY%3E