Для сравнения ДВУХ сигналов по фазе необходимо и достаточно, чтобы оба модуля захвата имели ОБЩУЮ СЧЕТНУЮ БАЗУ. То есть либо единый счетчик (что мы и имеем в Вашем случае), либо два разных счетчика, но работающие от единого, либо когерентного тактирования.
Есть только одно замечание.
Нужно учитывать переполнение счетчиков путем задания типов переменных используемых в качестве буферов разрядностью ВЫШЕ, чем разрядность самого таймера/модуля захвата.
Скажем, в Вашем случае буферы будут uint32_t (unsingned long). При вычитании буферов каналов (нахождении разности фаз) нужно привести тип к int16_t (int):
Код:
uint32_t phase1, phase2
....................
....................
delta_phase=(int_16t)(phase1-phase2);
Тогда переполнение будет учтено и результат будет ЗНАКОВЫМ (отставание-опережение фазы).