Can an ATMega1284 read two SMPTE at the same time?

Hello again! As usual, I'm using a modified version of this code to experiment with reading SMPTE time code and other biphase-based signals. I wanted to try to read two SMPTE signals simultaneously, but the ATMega328P that I've been using only has one timer capture event. Since the ATMega1284__*__ has two timer capture events (TIMER1_CAPT and TIMER3_CAPT), could I simply copy and paste the ISR, change the name of the timer event in the second ISR to TIMER3_CAPT (and make the other neccessary tweaks with the TCCR1B etc), and read two SMPTE signals simultaneously? I'm not concerned with the serial and all the extra stuff right now, I just want to know if I can decode the bits in the data. If this won't work, is there a way I could do it? Is there a way to do this on the ATMega328P I am using now?

Here is the ISR for convenience:

/* ICR interrupt vector */
ISR(TIMER1_CAPT_vect)   //ISR=Interrupt Service Routine, and timer1 capture event
{
 //toggleCaptureEdge
 TCCR1B ^= _BV(ICES1); //toggles the edge that triggers the handler so that the duration of both high and low pulses is measured.

 bit_time = ICR1; //this is the value the timer generates

 //resetTimer1
 TCNT1 = 0;

 if ((bit_time < one_time_min) || (bit_time > zero_time_max)) // this gets rid of anything that's not what we're looking for
 {
   total_bits = 0;
 }
 else
 {
   if (ones_bit_count == true) // only count the second ones pluse
   ones_bit_count = false;
   else
   {
   if (bit_time > zero_time_min)
   {
     current_bit = 0;
     sync_count = 0;
   }
   else //if (bit_time < one_time_max)
   {
     ones_bit_count = true;
     current_bit = 1;
     sync_count++;
     if (sync_count == 12) // part of the last two bytes of a timecode word
     {
       sync_count = 0;
       tc_sync = true;
       total_bits = end_sync_position;
     }
   }

   if (total_bits <= end_data_position) // timecode runs least to most so we need
   {                       // to shift things around
     tc[0] = tc[0] >> 1;

     for(int n=1;n<8;n++) //creates tc[1-8]
     {
       if(tc[n] & 1)
       tc[n-1] |= 0x80;

       tc[n] = tc[n] >> 1;
     }

     if(current_bit == 1)
       tc[7] |= 0x80;
   }
   total_bits++;
   }

   if (total_bits == end_smpte_position) // we have the 80th bit
   {
   total_bits = 0;
   if (tc_sync)
   {
     tc_sync = false;
     valid_tc_word = true;
   }
   }

   if (valid_tc_word)
   {
   valid_tc_word = false;

   timeCode[10] = (tc[0]&0x0F)+0x30;   // frames  this converst from binary to decimal giving us the last digit
   timeCode[9] = (tc[1]&0x03)+0x30;    // 10's of frames this converst from binary to decimal giving us the first digit
   timeCode[8] =  ':';
   timeCode[7] = (tc[2]&0x0F)+0x30;    // seconds
   timeCode[6] = (tc[3]&0x07)+0x30;    // 10's of seconds
   timeCode[5] =  ':';
   timeCode[4] = (tc[4]&0x0F)+0x30;    // minutes
   timeCode[3] = (tc[5]&0x07)+0x30;    // 10's of minutes
   timeCode[2] = ':';
   timeCode[1] = (tc[6]&0x0F)+0x30;    // hours
   timeCode[0] = (tc[7]&0x03)+0x30;    // 10's of hours

   drop_frame_flag = bit_is_set(tc[1], 2); //detects whether theree is the drop frame bit.

   write_tc_out = true;
   }
 }
}

Thanks!

__*__Ignore the fact that the Arduino IDE doesn't directly support the ATMega1284. I'm going to use MightyCore to get around this if it is determined that the ATMega1284 will work the way I want.

Yes. Do not forget that each timer has names for its own stuff - registers etc.
Priority for Timer3 is lower. I am quite curious how it will work.

line_code:
__*__Ignore the fact that the Arduino IDE doesn't directly support the ATMega1284. I'm going to use MightyCore to get around this if it is determined that the ATMega1284 will work the way I want.

See my signature... I'm not using Mighty core.

Budvar10:
Yes. Do not forget that each timer has names for its own stuff - registers etc.
Priority for Timer3 is lower. I am quite curious how it will work.
See my signature... I'm not using Mighty core.

Well, I'm not really going to use MightyCore (at least not the bootloader part). In my projects, I usually make my program in the Arduino IDE, export the binaries, and then put the code onto the chip with a TL866CS without the bootloader because I like to use my own board. I'm just going to use MightCore to give me the right settings for the binaries and handle the pin numbers and all those little things.

Also, how can I determine what the interrupt pins are for the timer1 capture vector and timer3 capture vector on the 1284P? On the 328P, the Timer1 capture vector pin is 8/PB0. Is this something I need to look for in the datasheet or somewhere else?

OP, how did you go with this?
Apart from being interested... it’s nice if you can post/close the thread with a conclusion.
thx