I'm having difficulties using the FIFO trigger mode to capture an impact event - it does not seem to work as intended.
Here's my understanding of how it's *supposed* to work:
In trigger mode - the FIFO is constantly pushing tri-axial sample data (temperature disabled) through until an Activity Event. At that point - it saves the number of entries prior to the event as defined by FIFO_SAMPLES and continues writing new data to the FIFO until all 512 entries are full. To find the peak acceleration values I should be able to just parse the 170 tri-axial data points and find the highest positive or lowest negative values. Right?
Here's what I'm experiencing as how it actually works:
In trigger mode with a 2.0g trigger threshold - I NEVER find a 2.0g+ record in the entire 512 bytes of the FIFO buffer - all I see is the "stationary" data prior to giving the board a smack. Not a good start. If I read the FIFO until I get 0's instead of just the 256 2-byte entries I end up reading about 611 2-byte samples and sometimes I'll capture part of the impact event (>2.0g values). If I delay too long before reading the FIFO though (400Hz ODR @ 1/2 filter) - the data gets overwritten with stationary values again and I don't see anything above ~1.0g.
So - it seems like what's actually happening is that the FIFO may or may not be saving data prior to the trigger event (hard to tell), but it's treating the remaining (or all?) of the FIFO buffer like its in Stream mode instead of Oldest Saved mode. Since there's no trigger to save the data points FOLLOWING an activity event, my only option is to interrupt and quickly read the FIFO plus any new incoming data on an impact. Is that right?
It would be terribly nice if I could trigger the FIFO on an activity event and save X data points AFTER the event for an indefinite amount of time until I can read the FIFO contents. What am I missing?