No sé si a muy bajo nivel se podrá hacer. Parece complicado.... La solución que yo empleo es sencilla: Cada vez que se activa la interrupción de lectura del ADC por la llegada del flanco, lo primero que hace ella misma es desactivar la atención a esta interrupción.
Así ya puedo hacer los cálculos tranquilamente, aunque las lecturas de corriente estén limitadas al tiempo que dura el ciclo de pwm, claro. También apunto el momento en el que he hecho esto. Nueva mejora: En el tiempo del ciclo pwm realizo un tren de medidas, y calculo su media, para obtener un dato más estable.
Una vez empleado el dato de corriente en el bucle principal del programa, para calcular cosas, informar al otro micro, etc. veo si ha pasado el tiempo que considero necesario para no cargar el sistema, y entonces vuelvo a activar la atención a esta interrupción. En el siguiente flanco de pulso pwm, se vuelve a leer la corriente, y se repite el proceso.
Ahora estoy leyendo cada 0,5 ~ 1Sg, en mis pruebas, y así no bloqueo el resto de tareas. Y como la constante de tiempo mecánica de un motor es bastante alta (su oposición a cambiar de velocidad), en realidad no se nota si lees más a menudo que esto. En una etapa posterior, con la regulación PI ya programada, ajustaré todos estos tiempos.