Encoder interrupt problem

I think you misunderstand micros().

micros() is the number of microseconds since the Arduino started. For example it might be a large number like 4,347,765 and the next time you take a reading it might be 4,347,773.

What you need to measure the speed is the difference between the value this time and the previous time.

Your interrupt routine might be something like this

void desni() {
  newMicros = micros();
}

Then in loop() you can calculate the speed

void loop() {
   microsBetweenInterrupts = prevMicros - newMicros;
   prevMicros = newMicros;
   // speed is worked out from the microsBetweenInterrupts
 }

Note that variables that are used with micros should be defined as unsigned long.

...R