Альтернативний спосіб відліку часу
Кам'яна сокира. (c) Wiki
Відмірювати
час за допомогою таймерів --
найбільш зручний і коректний спосіб. Однак, іноді він може не підходити, з
тих чи інших мотивів. Одна з альтернатив -- чисто програмна затримка.
Іншими словами, контролер змушують якийсь час виконувати задані
інструкції. Якщо потік виконання один і переривань не виникає, такий
спосіб доволі точний (а з перерахунку вимог, щоб він був точним, видно
основні його недоліки). Важливо, що на відміну від x86, час
виконання інструкцій мікроконтролера значно більш передбачуваний.
Наведений нижче приклад реалізації базується на коді з Leaflab Maple IDE, аналогу оболонки Ардуїно для STM32. Увага: Приклад може бути неточним -- особливо ретельно я не тестував.
Update: Див. також розвиток теми в "Мікросекундні затримки та відлік мікросекунд для STM32".
Update: Див. також розвиток теми в "Мікросекундні затримки та відлік мікросекунд для STM32".