Well, I use an Axon, and I'm not sure what you're using, but something like this:
initialize the timer OUTSIDE the loop (on the Axon, the timer also keeps track of how often it overflows. Let's call that variable TOver, and let's say I'm using an 8-bit timer, so it counts to 255 before overflowing). Then:
int newT = 0;
int oldT = 0;
int dT = 0;
initTimer(); //however you do this in your uC
LOOP
//switch the times
oldT = newT
TOver = getTimerOverflowCount(); //this is not a real function, but it does what it says :-P Your uC should have //something similar
newT = TOver*255 + timerCount;
dT = newT - oldT;
Do all your computations using dT
END LOOP
So really the only thing I do differently is put the timer outside the loop. You seem to initialize your timer inside the loop, which is odd, unless you're not using the uC's native timer?