Не вижу смысла усложнять, это же простой меандр. Я наоборот стремился чтобы получился маленький быстрый код (и то приходится вводить постоянную поправку, учитывающую время его выполнения). Можно даже упростить задачу - частоту увеличить в 8 раз. Измерил частоту, 4 сдвига вправо - и вот у меня время импульса/паузы выходной частоты. Вроде бы в логике ошибки нет? Но при реализации выходная частота не совсем такая, какую жду. Похожа, но не совсем. Мне бы понять причины этого.