While testing the BMA400, the reference values do not update correctly.
I'm using Development Desktop 2.0 with the BMA400 shuttle board to test the Generic Interupt functions.
Both GEN1 and GEN2 are enabled.
They are configured the same, except for the "activity reference update":
- GEN1 is set for "every time by data source"
- GEN2 is set for "one time".
I constantly move the board around, while pressing "Read".
- The reference values for GEN1 update as expected.
- The reference values for GEN2 do not update at all. It behaves the same as "manual" mode.
I have confirmed that GEN2INT_CONFIG0.act_refu=01.
Updating the reference values "every time" means that slow changes are not detected. For this, we need "one time".
"Manual" updates would work, but this increases the MCU comms traffic. Is there another solution?
I have new insight, but it does not solve the problem.
I am now playing with the "manual update" mode. I can write to the reference registers (0x53, 0x54).
However, once written, the registers cannot be changed while the interrupt is enabled.
In the datasheet, section 4.7:
"Any change of an interrupt configuration must be executed when the corresponding interrupt is disabled."
So, to change the reference values in "manual update" mode:
1. disable the interrupt
2. change the register value
3. enable the interrupt. (Oddly, we need to enable the interrupt to make the change appear in the register.)
Using this information, I tried the "one time" update mode again.
The "one time" update mode works, but only by toggling the interrupt "enable" bit, off and on, each time the interrupt fires.
Is this how it was designed? This seems bizarre.
Additionally, toggling the "enable" bit causes the reference registers to update, even if the interrupt has not fired.
This is not expected behaviour.
First, could we know what functions do you want to implement with GEN1 and GEN2?
I'm just trying to figure out how this interrupt works. The application is irrelevant, but I'll give you an example.