I'm creating an app that uses CMDeviceMotion to collect device-motion updates from an iPhone and Apple Watch at an update interval set by the user (varying from 20 Hz to 100 Hz). When checking the timestamps generated for each CMDeviceMotion instance, I have seen that some set update intervals does not equal the true update interval, while some are very precise. For example, setting the update interval to 0.0167 s (60 Hz) and. 0.0125 s (80 Hz) results in true update intervals of 0.019 s and 0.015 s respectively, while at 40 Hz and 100 Hz, the true update interval is as expected. So at some update intervals, it seems to round up or down to an update interval or frequency that "works"?
From the documentation, I understand that deviceMotionUpdateInterval is capped to minimum and maximum values, e.g. the maximum value is determined by the maximum frequency supported by the hardware. But what about in between? Does anyone know anything more about this?