I'm designing a battery powered device wit BMA280. So, I hope to use Low power modes with FIFO.
The operation sequence I'm testing is like this.
1. Constantly monitoring vibration in LPM1. In this time, slope interrupt is mapped interrupt pin1.
2. If some movement is detected, disables interrupt 1 and starts using FIFO with a equidistance mode.
In this time, changes mode to LPM2 to get data from FIFO_DATA (0x3F) and enables watermark interrupt mapped to interrupt pin2.
Actually, I set to Normal mode before going LPM2 from LPM1.
3. Fetching data from Fifo for a while.
4. After then, goes back to LPM1 again, enables interrupt 1, and disable interrupt 2.
But, unfortunately, I found that Fifo is not filled when I change mode from LPM1 to Normal in step 2 above.
The only way I can make queue operation again is applying softreset.
If I block codes to change modes, it correctly fills FIFO and invokes watermark interrupt (pin2)
Am I using BMA280 correctly? Is there any command to run FiFo filling operation while I'm changing modes?
Solved! Go to Solution.
During in LPM1 mode, we can not read data from FiFo buffer.
If we change the mode from LPM1 to Normal, BMA will not keep the timing.
In order to change mode from LPM1 to LPM2, we have to use Normal mode in-between.
It means there is no way to keep time using LPM1 and FIFO, if expected number of samples is higer than Fifo length.
Is my understanding is correct?