From 61001cbb3855fa14878eb895f9c20352653e965c Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Sun, 15 Oct 2023 21:30:59 +0300 Subject: [PATCH] =?UTF-8?q?Update=20=D0=BF=D1=83=D0=B1=D0=BB=D0=B8=D0=BA?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8E=20=E2=80=9C=D1=80=D0=B5=D0=B0=D0=BB?= =?UTF-8?q?=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8F-=D0=B7=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D1=80=D0=B6=D0=B5=D0=BA-=D0=B2-avr-=D0=BC=D0=B8=D0=BA=D1=80?= =?UTF-8?q?=D0=BE=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D0=BB=D0=B5?= =?UTF-8?q?=D1=80=D0=B5=E2=80=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../реализация-задержек-в-avr-микроконтроллере.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/content/blog/ru/реализация-задержек-в-avr-микроконтроллере.md b/src/content/blog/ru/реализация-задержек-в-avr-микроконтроллере.md index 93a8f81..ca147b0 100644 --- a/src/content/blog/ru/реализация-задержек-в-avr-микроконтроллере.md +++ b/src/content/blog/ru/реализация-задержек-в-avr-микроконтроллере.md @@ -12,7 +12,6 @@ tags: pubDate: 2023-10-15T16:28:52.587Z updatedDate: 2023-10-15T16:28:52.601Z --- - # Способы реализации Существует два способа как можно реализовать задержку - это использовать аппаратные таймеры микроконтроллера или использовать простой цикл который выполняется определенное количество тактов. Преимущество использования аппаратного таймера микроконтроллера перед обычным программным циклом заключается в неблокирующем выполнении программы за счет того что работа таймера-счетчика не зависит от выполнения основной программы. Но иногда нужно использовать задержку всего в несколько микросекунд, что особо не повлияет на работу программы в некоторых случаях, тогда можно посмотреть в сторону простых циклов. Будет рассмотрен вариант и с длительной задержкой в несколько часов или дней. Программы будут представлены на языке Си и Ассемблера для микроконтроллера AVR ATtiny45V. В качестве основной программы будет моргающий светодиод который переключается раз в 0.5 секунд. @@ -122,11 +121,11 @@ avrasm2 -fI ./main.asm
Выбор частоты выполнения инструкций для симулятора
-Установим точки останова на холостые операции **nop** до и после вызова макроса и выполним отладку: +Установим точки останова на холостые операции `nop` до и после вызова макроса и выполним отладку: ![Отладка программы](/media/screen-1.png) -До вызова инструкции **nop** прошло 8 тактов или 1 микросекунда. Очищаем Stopwatch и нажимаем кнопку продолжения программы (F5): +До вызова инструкции `nop` прошло 8 тактов или 1 микросекунда. Очищаем Stopwatch и нажимаем кнопку продолжения программы (F5): ![Отладка программы](/media/screen-2.png) @@ -605,7 +604,7 @@ int main(void) { ## Полезные материалы -- [AVR Instruction Set](https://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf) -- [AVR130: Setup and Use of AVR Timers](https://ww1.microchip.com/downloads/en/Appnotes/Atmel-2505-Setup-and-Use-of-AVR-Timers_ApplicationNote_AVR130.pdf) -- [AVR Delay Loop Calculator](http://darcy.rsgc.on.ca/ACES/TEI4M/AVRdelay.html) -- [AVR Timer Calculator](https://eleccelerator.com/avr-timer-calculator/) +* [AVR Instruction Set](https://ww1.microchip.com/downloads/en/devicedoc/atmel-0856-avr-instruction-set-manual.pdf) +* [AVR130: Setup and Use of AVR Timers](https://ww1.microchip.com/downloads/en/Appnotes/Atmel-2505-Setup-and-Use-of-AVR-Timers_ApplicationNote_AVR130.pdf) +* [AVR Delay Loop Calculator](http://darcy.rsgc.on.ca/ACES/TEI4M/AVRdelay.html) +* [AVR Timer Calculator](https://eleccelerator.com/avr-timer-calculator/) \ No newline at end of file