02-14-2020 05:59 PM
02-14-2020 11:56 PM
Thank you for your question. BMA253 slope (or any-motion) interrupt uses the difference between two successive samples as input, which is the current sample minus the previous sample, the next sample minus the current sample, etc. When the difference or slope is beyond the slope_th threshold for the amount of slope_dur duration, the slope interrupt will be triggered. Once the condition is no longer valid, the slope interrupt will be cleared automatically.
For example, if you set slope_th to 5 LSB at +/-4g range, then it means the slope_th threshold is 5*7.81 = 39.05mg. If you set slope_dur to 2, then it means there should be 3 samples of the difference go beyond the slope_th in order to generate the slope interrupt. If you use 7.81Hz or 15.63Hz bandwidth, then it will be very difficult for BMA253 to generate slope interrupt. You should use 1000Hz bandwidth and/or change slope_dur to 0 meaning that whnever there is one sample of the difference goes beyond the slope_th, the slope interrupt will be generated.
In addition, the slope interrupt is sensitive to tapping motion, hitting motion or fast shaking motion, etc. If you wave the device in the air slowly, then you won't be able to see the slope interrupt because the difference is not too much. What you can do is monitor the rising edge or falling edge of the slope interrupt signal on one of the two interrupt output pins to count how many times the slope interrupt has been triggered.
02-17-2020 11:15 AM - edited 02-17-2020 03:37 PM
I am thankful for your reply and your suggestions.
As far as I know, the any-motion interrupt has one, and only one, output which is "slope_int". The"no_slope_int" is based on other parameters than those used for the any-motion interrupt.
When you mentionned the "rising edge" or the "falling edge", does it seem possible to check the state of the interrupt for each new acceleration sample (for each of the three axis) ? If yes, do I need to apply a timer, before monitoring the rising/falling edge, to wait that the interrupt output will be updated fo this new sample ?
02-17-2020 07:21 PM
Yes, any-motion (or slope) interrupt has the slope_int output. No-motion interrupt also uses the difference of two successive samples as input. But the logic is opposite compared to any-motion interrupt. When the differences are within the slo_no_mot_th threshold for the amount of duration time slo_no_mot_dur, then no-motion interrupt will be triggered. If any-motion event happens before the no-motion duration ends, then the no-motion duration timer will get reset and will start counting again as long as the difference is within the threshold again.
Back to any-motion interrupt, when the difference goes beyond the slope_th for the number of (slope_dur+1) samples, then slope interrupt will be triggered. If you map this interrupt to INT1 pin or INT2 pin, then the signal on that pin will go high. If the condition is no longer valid, the signal will go low automatically. This is so called rising edge and falling edge. However, counting the number of slope interrupts is not that helpful for real applications, because single even may trigger multiple pulses of the slope interrupt signal.
Please let us know what you really want to achive. We then may be able to give you more helpful suggestions. Also please let us know your email address and where you are located.
02-18-2020 12:08 PM
Thank you for your reply. I understand better the any-motion process.
I put my email address and my location within my profile.
In fact, I would like to get more information about the movement that triggered the interrupt. One of the potential information, it could be the time duration of the movement. In my case, the value "slope_dur" is not higher enough because the human movements, like a step or stride, stayed longer than "4 samples" duration. Therefore, I want to compute the number of samples while the interrupt stayed High between a rising edge and the following falling edge. Such feature will help me to monitor the daily activity of a user of the accelerometer.
I understand the risk behind the presence of "a single event that may trigger multiple pulses of the slope interrupt signal". However, event with multiple pulses could be filtered thanks to the parameters, like "slope_th" (i.e. a higher value can reduce the probability that random events trigger the interrupt) , or to the post data processing through some conditions on the time duration of the movement.