La maniobra más básica para funciones complicadas es utilizar los temporizadores a bordo.
Dependiendo de cómo los configure, puede hacer que cuenten exactamente la cantidad de ciclos de reloj que se requieren para que una determinada función se ejecute. Simplemente lea el temporizador antes de la llamada a la función y luego otra vez después de la llamada a la función.
Deberá revisar el código de ensamblaje para saber cuánto tiempo se debe quitar el temporizador para las llamadas de lectura, pero si es una función prolongada o si no le importa estar en un par de ciclos de reloj, entonces es De acuerdo.
El único error en la conversión de ciclos de reloj de nuevo a tiempo es el posible error en la frecuencia de oscilación del reloj del sistema. Nuevamente, esto será despreciable para las funciones que demoran mucho tiempo en ejecutarse.
Parece que, en su caso, desea algo alrededor de 30Hz (30 FPS), que es un ciclo de tiempo comparado con el reloj del procesador muy largo.