Скорость не особо важна, памяти много. Главное - отсутствие дыр с задержкой переноса через выход OC1A и T2.
u8 old, hi;
u16 tcnt1;
old=TCNT2;
tcnt1=TCNT1; // (TCNT1L,TCNT1H).6 циклов с командами LD memo,reg
hi=TCNT2;
if(hi!=old) {tcnt1=TCNT1;}
// Итого в hi и tcnt1 24-биттовое значение.
// В реальном проекте результаты помещены в Little Endian структуру.