From 7b50e977183ecc3f6e099a87113ff4039fe54d2d Mon Sep 17 00:00:00 2001 From: Sergey Yarkov Date: Wed, 25 Oct 2023 17:52:47 +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 --- .../blog/ru/реализация-задержек-в-avr-микроконтроллере.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/content/blog/ru/реализация-задержек-в-avr-микроконтроллере.md b/src/content/blog/ru/реализация-задержек-в-avr-микроконтроллере.md index ca147b0..b15d328 100644 --- a/src/content/blog/ru/реализация-задержек-в-avr-микроконтроллере.md +++ b/src/content/blog/ru/реализация-задержек-в-avr-микроконтроллере.md @@ -42,7 +42,7 @@ DELAY16_LOOP: В данной реализации используется макрос `delay16` который загружает кол-во тактов в два 8-ми битных регистра которые помечены как младший и старший. Затем вызывается подпрограмма выполнения цикла. Зачем нужно в расчете тактов делить полученное число на 4? Посмотрите на подпрограмму `DELAY16_LOOP` которая выполняет декрементирование 16-ти битного числа, вы увидите что одна итерация цикла занимает 4 такта. От полученного числа отнимаем 3 для компенсации времени. -В итоге максимальная задержка которая может получиться при работе МК в 8 MHz вызвав этот макрос равняется `65535/8 * 4 = 32767.5uS` что не совсем подходит для мигания светодиодом. Что бы сделать задержку дольшо можно использовать 24 бита для хранения кол-ва тактов. Тогда максимальная задержка составит `16,777,216/8 * 5 = 10.48сек`. В итоге получается такая программа с переключающимся светодиодом раз в 0.5 секунд: +В итоге максимальная задержка которая может получиться при работе МК в 8 MHz вызвав этот макрос равняется `65535/8 * 4 = 32767.5uS` что не совсем подходит для мигания светодиодом. Что бы сделать задержку дольше, можно использовать 24 бита для хранения кол-ва тактов. Тогда максимальная задержка составит `16,777,216/8 * 5 = 10.48сек`. В итоге получается такая программа с переключающимся светодиодом раз в 0.5 секунд: ```asmatmel .EQU F_CPU = 8 ; MHz