понедельник, 9 января 2017 г.

Несколько слов о встроенных задержках в mikroPascal

В mikroPascal имеется ряд удобных процедур (или функций, если говорить применительно к функциональности этих элементов, а не к их синтаксису) для отработки временных задержек. Народ их активно использует, но... Впрочем, дальше вы всё увидите сами:


Возможное предположение здесь, как правило, одно: кварц с Ali завелся не на той гармонике (и далее должна быть пространная ругань в адрес продавца, минимум на половину страницы). Но! Более длинные задержки отрабатываются более-менее корректно (с погрешностью ± несколько процентов). Получается, что короткую задержку в 1 us необходимо реализовывать как-то иначе, например, через процедуру Delay_us(1) ­– ошибка при этом тоже будет, но все-таки она будет меньше.


Надо будет когда-то потом посмотреть эту погрешность и на частоте встроенного генератора 8 МГц, но уже и так понятно, что в критичных к точности таймингов случаях лучше реализовывать короткие задержки своей процедурой, например, через свободный таймер с контролем флага в цикле.

ps. Для анализа таймингов использовался 8-канальный логический анализатор Saleae logic.



Комментариев нет:

Отправить комментарий

Ваш комментарий откроется после проверки и подтверждения.
Благодарю за понимание необходимости проверки!