Возвращать состояние регистров ввода/вывода в исходное (до прерывания). Думаю так. Один флаг использовать для идентифицирования текущего состояния. Расчёты не прикидывал, но (+)
судя по перечисленным пинам (они не повторяются), можно в прерывании переключить выводы в произвольное состояние (все в одно, либо как-то условиться) и через половину периода переключиться обратно. Делать это либо внтури прерывания, либо удвоить частоту и использовать флаг. По-моему, так, давно не практиковался, но для меня звучит работоспособно.