2020-08-18 07:49 AM
I search the net, and found a post with someone with a similar issue, but the link that was posted on the response is dead error 404.
I was able to set up the significant motion event to trigger on int1 but it only seems to read 1 axis of the accelerometer. And depending on its position it might never triggers the interrupt
What I would like to do is set up a "wake up" interrupt, that happens when motion is detected on any of the accelerometer axis.
Do you have any examples or sample code of this being implemented?
The one in the AN4650 never triggers no matter how i shake my board.
Thank you.
Luis.
Solved! Go to Solution.
2020-08-20 09:51 AM
Niccolo tutti va bene.
I am sorry to have bothered you. But after reproducing the steps you asked me too, and checking that everything was ok on my side. I went and checked in with the person who built the board for me, to check if a signal was emitted with the osciloscope like you suggested.
And we found the issue apparently he put on a LSM6DSMtr instead of the LSM6DS3. Needless to say, it was never going to work since the wakeup interrupt although similar are programmed differently on both models.
Once again, thank you for your help.
And sorry to have wasted your time, although I did learn about significant motion, so it wasn't a total loss of time for me!
Sincerely,
Luis.
2020-08-19 06:56 AM
Hi Luis @LSmit.1 ,
let me try to help you with your problem: I know some of the steps I'll ask you to verify are basic, but the most difficult bugs to track are often the basic ones, so I'll start with these.
Please confirm that:
On a side note, I'm not sure if your interrupt triggers only for one axis (I'd like to know which one) o does not trigger at all (as you stated in the title), this could help in finding the next step to follow.
Let me know if this helps.
2020-08-19 07:36 AM
I write do activate all three axis, I write 38h to the CTRL9_XL (18h)
I send 00h to the WAKE_UP_THS to have the lowest threshold possible.
I receive the event on int1, that i programmed on the MD1_CFG writing 20h
int1 never receives the interrupt, I move it in x y z axis, shake it, rotate it... I never receive the event. I tried with or without latching. Same thing.
2020-08-19 07:38 AM
I am making due with the significant motion interrupt, but I am not quite sure what is considered a significant motion, the accelerometer looks for event greater than the threshold on any axis for sig motion?
2020-08-19 08:14 AM
So I understood that you want your wakeup event on INT1 but it does not show, right?
other 2 questions:
maybe if you can share the section where you initialize the sensor I can help you better.
2020-08-19 08:16 AM
the significant motion interrupt is not the same as the wakeup interrupt, that should be configured using the embedded functions of the sensor
(page 52 of this application note explains it better: https://www.st.com/resource/en/application_note/dm00402563-lsm6dsl-alwayson-3d-accelerometer-and-3d-gyroscope-stmicroelectronics.pdf )
2020-08-20 01:26 AM
Yes I know, they are different events/interrupts, but when I use the sig motion and shake or move my board, the microcontroller receives the interrupt on pin1 like I ask.
But what is a significant motion, any motion that is greater than the threshold accel on any active axis (x y z being active in my case) or does it need to be a grouping of readings that exceed the threshold?
What constitute a significant motion is not very well explained.
If you could point me in the direction of a definition of the significant motion, or explain it to me or give me an example of what constitutes a significant motion I would appreciate it. Currently my board receives the sig motion interrupt when I shake it, any which way, but I would like to know if sig motion will be apropriate for my end use. If it satisfies my use case, it could take the place of the wakeup interrupt and we could cut this discussion short.
As to the wake up settings
I am using the DS3 model so I am following the example from the AN4650. The significant motion work, But when I input the very same inputs described in chapter 4.3 from the AN4650 I do not get any results. Could you check that those inputs are indeed correct?
"1 Write 60h into CTRL1_XL // Turn on the accelerometer // ODR_XL = 416 Hz, FS_XL = 2g
2 Write 00h into TAP_CFG // Apply slope filter; latch mode disabled
3 Write 00h into WAKE_UP_DUR // No duration
4 Write 02h into WAKE_UP_THS // Set wake-up threshold
5 Write 20h into MD1_CFG // Wake-up interrupt driven to INT1 pin"
2020-08-20 07:31 AM
I'm sorry if I wasn't able to help you, let me try to answer to your questions in a better way:
The significant motion recognition is embedded thanks to the step counter function of the LSM6DS3: it triggers the interrupt when the number of steps in SM_THS_[7:0] bits of register SM_THS is met (see section 6.2 of AN4650). You are right, there is not a complete definition of what a significant motion is in this Application Note, we will update it as soon as possible.
I can't confirm with my sensor right now, I'll do it tomorrow and let you know if you found some problem in the AN.
Meanwhile you can check whether your registers are clean or not, when you begin to write, and have the right values after you write them.
This is to rule out that some bits are interfering with your initialization.
2020-08-20 07:42 AM
No worries, I just boldened some stuff just to make it stand out, I am not mad or anything, thank you for trying to help.
I am going to write to my registers and read them right away see if I get the values I put in.
Thank you for detailing what constitute significant motion, the explanation goes hand in hand with the experimental results I was receiving where I had to bound my board up and down and linear motion didnt seem to wake it up.
I will get to reading what I write to the register and get back to you.
2020-08-20 07:44 AM
Don't worry, I didn't take it personal, just trying to be polite.
thank you, I'll be back tomorrow with my results.