1) Длительность импульса я вычисляю как просто 150'000'000/частота в целых числах. Тут может быть погрешность. Относительная погрешность растёт линейно и составляет 0.15% для частот порядка 100кГц (т.е. 150Гц для 100кГц, и примерно 2Гц погрешности на частотах 10кГц)
Тут повысить точность можно, но я почему-то сразу не думал об этом.
2) "синхронизируюсь" я по выполненным тактам самого процессора. Т.е. считается, что процессор работает на частоте 150МГц, и у него есть счётчик количества выполненных команд. На основе этого счётчика я и делаю задержки. Так сказать, "наматываю счётчик" выполнением пустых команд, пока он не достигнет нужного значения. Конечно, хорошо бы в реальности проверить и измерить частоту.
Плавает ли частота у самого кристалла -- фиг знает.





Ответить с цитированием