Ok that makes perfect sense to me.
I fixed the delay thing and the volatile now so my code looks like this. I'm going to go and try it in the car:
byte RPMp = 3;
int MAP = 0;
int TPS = 0;
int KR = 0;
int AFR = 0;
double RPM = 0.0;
byte a = 0;
volatile unsigned long currenttime = 0;
volatile unsigned int interval = 0;
unsigned long delaycounter = 0;
void sensorTest() {
unsigned int avgrpm[] = {0,0,0,0,0,0,0,0,0,0};
unsigned int finalrpm = 0;
tft.setTextColor(ILI9341_WHITE);
tft.setTextSize(2);
currenttime = micros();
attachInterrupt(1, interruptRoutine, FALLING);
while(1){
tft.setCursor(0, 0);
tft.println((float)analogRead(A7)*5/1023);
tft.println((float)analogRead(A6)*5/1023);
tft.println((float)analogRead(A5)*5/1023);
tft.println((float)analogRead(A4)*5*2.375/1023+6.3625);
RPM = (double)interval*0.000001;
RPM = 60/RPM;
avgrpm[a] = (unsigned int)RPM;
finalrpm = 0;
for(int b = 0; b<10; b++) {
finalrpm += avgrpm[b];
}
finalrpm *= 0.1;
tft.println(finalrpm);
delaycounter = micros();
while((micros() - delaycounter) < 100000) {
}
delaycounter = 0;
tft.fillRect(0, 0, 80, 80, ILI9341_BLACK);
if(a>9)
a=0;
}
}
void interruptRoutine() {
interval = micros() - currenttime;
currenttime += interval;
a++;
}