millis() and micros() and Interrupts

Been having some difficulty with timing the rotation of a motor shaft. Basically I need to trigger a response when the motor speed is a particular rpm. I have a hall effect pick-up to give a pulse every rotation but the duration of the pulse is in the order of 1ms so I'm detecting it with an interrupt. It all works OK however the response is a bit jittery.

I'm measuring the time with millis() and checking TPeriod within the main program loop
ie,
void Pulse() //ISR
*{ *

  • TPeriod=millis()-previousMillis;*
  • previousMillis = millis(); // Start new timing period*
    }

I know that my problem is almost certainly because millis() is not incremented within an ISR but cant find much documentation as to whether or not micros() is also disabled.

Is it worth me simply using micros() and altering the timings by 1000 or is that equally doomed as a concept?