В mikroPascal имеется ряд удобных процедур (или функций, если говорить применительно к функциональности этих элементов, а не к их синтаксису) для отработки временных задержек. Народ их активно использует, но... Впрочем, дальше вы всё увидите сами:
Возможное предположение здесь, как правило, одно: кварц с Ali завелся не на той гармонике (и далее должна быть пространная ругань в адрес продавца, минимум на половину страницы). Но! Более длинные задержки отрабатываются более-менее корректно (с погрешностью ± несколько процентов). Получается, что короткую задержку в 1 us необходимо реализовывать как-то иначе, например, через процедуру Delay_us(1) – ошибка при этом тоже будет, но все-таки она будет меньше.
Надо будет когда-то потом посмотреть эту погрешность и на частоте встроенного генератора 8 МГц, но уже и так понятно, что в критичных к точности таймингов случаях лучше реализовывать короткие задержки своей процедурой, например, через свободный таймер с контролем флага в цикле.
ps. Для анализа таймингов использовался 8-канальный логический анализатор Saleae logic.
Надо будет когда-то потом посмотреть эту погрешность и на частоте встроенного генератора 8 МГц, но уже и так понятно, что в критичных к точности таймингов случаях лучше реализовывать короткие задержки своей процедурой, например, через свободный таймер с контролем флага в цикле.
ps. Для анализа таймингов использовался 8-канальный логический анализатор Saleae logic.
Комментариев нет:
Отправить комментарий
Ваш комментарий откроется после проверки и подтверждения.
Благодарю за понимание необходимости проверки!