Arduino Mega 2560 timer1 capture not entering isr

I have setup Timer1 capture interrupts to capture the time before and after an event. I uploaded this code onto my arduino uno and everything worked perfectly. I checked and rechecked the datasheets and as far as I can see there is no differences in the registers that handle timer interrupts between the uno and mega2560. When uploading to the mega2560, however. The TIMER1_OVF_vect works but the the program will not enter TIMER1_CAPT_vect. I have checked the flag register and both flags are set but it will not go to the capture isr. Global interrupts are enabled and so is the enable bit in timsk1. Im starting to think my mega is broken. Can someone upload this to your mega2560 and see if it works? Timer1 on the mega works with pins 11 and 12. Timer1 on the uno works with pin 8. If anyone knows how to fix this please help!
Thanks! The code file is attached below

CODE for viewing:

volatile unsigned long Capt1, Capt2; //VARIABLES TO HOLD TIMESTAMPS
volatile unsigned long final_clocks;

volatile unsigned long ct1 = 0, ct2 = 0;
volatile unsigned long test = 0;
volatile double time_ns;
volatile double time_us;
volatile double time_ms;
volatile uint8_t Flag = 0; //CAPTURE FLAG
volatile uint8_t prt = 0;

#define icpPin 12 // PB0 ICP D8 Interrupt input

volatile unsigned long clock_ticks; //32 bits. capable of storing 4294967295 ticks or (for 16Mhz processor) 268435455.9375 us

/--------------------------------------------------------------------------------------------------
INTIALIZING TIMER
---------------------------------------------------------------------------------------------------
/
void InitTimer1(void)
{
TCNT1 = 0; //SETTING INTIAL TIMER VALUE
TCCR1B |= (1 << ICES1); //SETTING FIRST CAPTURE ON RISING EDGE ,(TCCR1B = TCCR1B | (1<<ICES1)
TIMSK1 |= (1 << ICIE1) | (1 << TOIE1); //ENABLING INPUT CAPTURE AND OVERFLOW INTERRUPTS
TCCR1A = 0; //DISABLE COMPARE OUTPUT MODE AND PWM MODE
}
/--------------------------------------------------------------------------------------------------
STARTING TIMER
---------------------------------------------------------------------------------------------------
/
void StartTimer1(void)
{
TCCR1B |= (1 << CS10); //starting timer with prescaler 1 (OVERFLOW EVERY 65536 CLOCKS)
// TCCR1B|=(1<<CS11)|(1<<CS10); //STARTING TIMER WITH PRESCALER 64
// TCCR1B|=(1<<CS12); //STARTING TIMER WITH PRESCALER 256
// TCCR1B|=(1<<CS12)|(1<<CS10); //STARTING TIMER WITH PRESCALER 1024
sei(); //ENABLING GLOBAL INTERRUPTS
}
/--------------------------------------------------------------------------------------------------
CAPTURE ISR
---------------------------------------------------------------------------------------------------
/
ISR(TIMER1_CAPT_vect)
{
// TCNT1 = 0;
if (Flag == 0)
{
ct1 = ICR1;
Capt1 = ICR1 + clock_ticks; //SAVING CAPTURED TIMESTAMP
TCCR1B &= ~(1 << ICES1); //CHANGE CAPTURE ON FALLING EDGE
Flag = 1;
}
else if (Flag == 1)
{
ct2 = ICR1;
Capt2 = ICR1 + clock_ticks; //SAVING CAPTURED TIMESTAMP
TCCR1B |= (1 << ICES1); //CHANGING CAPTURE ON RISING EDGE
final_clocks = Capt2 - Capt1;
prt = 1;
Flag = 0;
}
digitalWrite(13, !digitalRead(13));

}
/--------------------------------------------------------------------------------------------------
OVERFLOW ISR
---------------------------------------------------------------------------------------------------
/
ISR(TIMER1_OVF_vect)
{
clock_ticks += 65536; //increment top 16 bits of the 32 bit timer every time the timer overflows
}
/--------------------------------------------------------------------------------------------------
MAIN FUNCTION
---------------------------------------------------------------------------------------------------
/
void setup()
{
Serial.begin(115200);
pinMode(13, OUTPUT);
pinMode(icpPin, INPUT);
InitTimer1(); //CALLING FUNCTION INITTIMER1 TO INITIALIZE TIMER 1
StartTimer1(); //CALLING FUNCTION STARTTIMER1 TO START TIMER 1
}

void loop()
{
if (prt) {
time_ns = final_clocks * 62.5;
time_us = final_clocks * 62.5 / 1000;
time_ms = final_clocks * 62.5 / 1000000;
Serial.print("Clocks: “);
Serial.print(final_clocks);
Serial.print(”\t Time(ns): “);
Serial.print(time_ns);
Serial.print(”\t Time(us): “);
Serial.print(time_us);
Serial.print(”\t Time(ms): “);
Serial.print(time_ms);
Serial.println(” ");

/Serial.print(“Capture 1: “);
Serial.print(Capt1);
Serial.print(”\t ct1: " );
Serial.print(ct1);
Serial.print(”\t Capture 2: “);
Serial.print(Capt2);
Serial.print(”\t ct2: " );
Serial.print(ct2);
Serial.print("\t Clocks: “);
Serial.print(final_clocks);
Serial.println(” ");
/

prt = 0;

}

//Serial.println(clock_ticks);
}

pwm_read3.ino (4.44 KB)

Timer1 on the mega works with pins 11 and 12.

Those are the Output Compare pins. Which one is Input Capture? (It is not 11 or 12.)