I'm facing an issue with detection of orientation interrupt. Below given is my register configurations.
ORIENT_CFG: BMI160_REG_INT_ORIENT0 [0x65] = 0x40 (0b01000000)
ORIENT_TRIG: BMI160_REG_INT_EN0 [0x50] = 0x40 (0b01000000)
When the orientation of the board is changed, interrupt was detected on GPIO and there was change in orient<1:0> bits of INT_STATUS
[00:01:11.450,042] <dbg> BMI160: INT STATUS (0x1C-0x1F): 00 00 00 10
[00:30:10.103,302] <dbg> BMI160: INT STATUS (0x1C-0x1F): 00 00 00 30
[00:30:11.536,560] <dbg> BMI160: INT STATUS (0x1C-0x1F): 00 00 00 70
[00:30:13.248,382] <dbg> BMI160: INT STATUS (0x1C-0x1F): 00 00 00 40
But orient_int bit of INT_STATUS is always 0. It should be 1 according to datasheet.
Because of this, corresponding callback of our application is not being triggered.
Solved! Go to Solution.
Re: BMI160: orient_int flag is not being set though interrupt was detected on GPIO
On page 66 of BMI160 datasheet, it says that new data, orientation and flat interrupt cannot be latched. This means that the orientation interrupt always has a pulse with about 100us duration. If you read interrupt status register, then the orientation interrupt status bit will always be 0 because it clears itself so quickly. That is the reason why you can see the interrupt signal on INT1 pin, but you don't see the interrupt status bit to be "1".