I want to minimize current consumption by switching from NORMAL to Low Power Mode 1 and to detect no-motion simultaneously.
That works. But when I'm trying to move BMA280 continually, no-motion interrupt is fired despite the fact that motion does persist. Tested with sleep_dur 0.5ms, 500ms, 1s. In NORMAL mode I see no interrupts by moving the device, and I do see no-motion interrupt when BMA280 is motionless.
Is that expected behaviour? Can I use no-motion & LPM1 together or not?
Solved! Go to Solution.
Thanks for your inquiry.
BMA280 no motion interrupt works in both normal mode and LPM1 mode. When the slope (current sample minus previous sample) is beyond the threshold, no motion interrupt signal will be low on INT1 or INT2 pin. When there is no motion for the amount of time duration, no motion interrupt signal will go high. During the no motion duration counting period if motion happens again then the no motion duration will start counting again when there is no motion.
So BMA280 no motion interrupt is kind of level based. When the interrupt pin is low, it means there is motion or motionless with duration counting. When the interrupt pin is high, it means there is no motion already for the amount of duration.
I'm glad to see in black and white, that no motion interrupt should work in LPM1 mode too. But it doesn't on my side. Part is not damaged, selftest passes.
Could someone from Sensortec verify these settings for BMA280?
1. 0xB6 -> BGW_SOFTRESET
2. 0x04 -> INT_OUT_CTRL // int2_lvl to 0 (push-pull), int1_lvl level to 1
3. 0x0A -> INT_7 // 39.1mg slo_no_mot_th in 2g range
4. 0x38 -> INT_5 // 15s no-motion => interrupt
5. 0x07 -> INT_RST_LATCH // latched interrupt
6. 0x08 -> INT_MAP_2 // map int2_slo_no_mot to ACC_INT2
7. 0x0F -> INT_EN_2 // enable slo_no_mot_sel, slo_no_mot_en_z, slo_no_mot_en_y, slo_no_mot_en_x
8. 0x5E -> PMU_LPW // lowpower_en = 1, sleep_dur = 0b1111 (1s sleep)
9. 0x00 -> PMU_LOW_POWER // lowpower_mode = 0 (LPM1)
10. 0x87 -> INT_RST_LATCH // clear interrupt if any
Without points 8. and 9. (NORMAL MODE, +130uA):
a) BMA280 relaxes (still) => no-motion interrupt (ACC_INT2) fired after 15s ... OK
b) BMA280 in motion => no-motion interrupt (ACC_INT2) within 60s ... OK, then BMA280 relaxes => no-motion interrupt fired in 75. second ... OK
With points 8. and 9. (LPM1, power friendly):
a) BMA280 relaxes (still) => no-motion interrupt fired (ACC_INT2) after 15s ... OK
b) BMA280 in motion => no-motion interrupt fired (ACC_INT2) in 15. second ... KO
Please help. Thanks
When BMA280 is in LPM1 with 1s sleep duration, your motion will be missed during 1s sleep time. What you can do is to tap your device many times continuously, then when you stop tapping, 15s later no motion interrut will be triggered.
I do tap BMA280 device many times CONTINUOUSLY within 15s, but no-motion interrupt arrives in LPM1 (again: tested with sleep_dur 0.5ms, 500ms, 1s).
No-motion interrupt IS NOT FIRED IN NORMAL MODE by the same conditions.
Can You, please, replicate my issue on on Your side in real hardware (my settings above + LPM1)?
I'm out of ideas.