Can an MPU9250 (or IMU6050) be reset without cycling the VCC?
I am 99.9% stable with my rocket telemetry project, but I still have a nagging issue with the MPU9250. When I let the rig sit on a launch pad for 30 minutes, sampling the accelerometer every 10ms, the MPU code stops working randomly about every 10 minutes in. The issue always coincides with a radio send, so I suspect RF interference that is just impacting the MPU board or a power pulse that messes with the MPU.
I have not narrowed down the specific code issue, since I cannot repeat it on the bench and it only happens when my rig (antennas, batteries, all other components) are assembled. My function to check the MPU/DMP and set the ac.x,ac.y, ac.z values (and calculate tilt) either doesn't run (status != 0x02) or runs but sets the same value every time. So, what I see in my logs is the same x,y,z values for every read after the problem occurs. I am handling for FIFO overflows and reseting FIFO regularly when things get busy.
I am traveling now, so I can't instrument the code and narrow down the issue, but one thought I had was to just test for the same value 10 times in a row (~100ms) and if the x,y,z were the same then reset the MPU9250. This is crude, but might be easier than trying to shield everything from the 2watt transmitter. A software reset would presume the sensor still has a pulse. I could work out a hardware reset on VCC, but that adds more complexity. I need something like a watchdog timer, but for just one sensor, since the Arduino and all the other sensors, radio, SD, etc. are working just fine when the problem occurs.