Update публикацию “реализация-задержек-в-avr-микроконтроллере”

This commit is contained in:
Sergey Yarkov 2023-10-15 21:30:59 +03:00
parent 9e86500cda
commit 61001cbb38

View File

@ -12,7 +12,6 @@ tags:
pubDate: 2023-10-15T16:28:52.587Z pubDate: 2023-10-15T16:28:52.587Z
updatedDate: 2023-10-15T16:28:52.601Z updatedDate: 2023-10-15T16:28:52.601Z
--- ---
# Способы реализации # Способы реализации
Существует два способа как можно реализовать задержку - это использовать аппаратные таймеры микроконтроллера или использовать простой цикл который выполняется определенное количество тактов. Преимущество использования аппаратного таймера микроконтроллера перед обычным программным циклом заключается в неблокирующем выполнении программы за счет того что работа таймера-счетчика не зависит от выполнения основной программы. Но иногда нужно использовать задержку всего в несколько микросекунд, что особо не повлияет на работу программы в некоторых случаях, тогда можно посмотреть в сторону простых циклов. Будет рассмотрен вариант и с длительной задержкой в несколько часов или дней. Программы будут представлены на языке Си и Ассемблера для микроконтроллера AVR ATtiny45V. В качестве основной программы будет моргающий светодиод который переключается раз в 0.5 секунд. Существует два способа как можно реализовать задержку - это использовать аппаратные таймеры микроконтроллера или использовать простой цикл который выполняется определенное количество тактов. Преимущество использования аппаратного таймера микроконтроллера перед обычным программным циклом заключается в неблокирующем выполнении программы за счет того что работа таймера-счетчика не зависит от выполнения основной программы. Но иногда нужно использовать задержку всего в несколько микросекунд, что особо не повлияет на работу программы в некоторых случаях, тогда можно посмотреть в сторону простых циклов. Будет рассмотрен вариант и с длительной задержкой в несколько часов или дней. Программы будут представлены на языке Си и Ассемблера для микроконтроллера AVR ATtiny45V. В качестве основной программы будет моргающий светодиод который переключается раз в 0.5 секунд.
@ -122,11 +121,11 @@ avrasm2 -fI ./main.asm
<figcaption>Выбор частоты выполнения инструкций для симулятора</figcaption> <figcaption>Выбор частоты выполнения инструкций для симулятора</figcaption>
</figure> </figure>
Установим точки останова на холостые операции **nop** до и после вызова макроса и выполним отладку: Установим точки останова на холостые операции `nop` до и после вызова макроса и выполним отладку:
![Отладка программы](/media/screen-1.png) ![Отладка программы](/media/screen-1.png)
До вызова инструкции **nop** прошло 8 тактов или 1 микросекунда. Очищаем Stopwatch и нажимаем кнопку продолжения программы (F5): До вызова инструкции `nop` прошло 8 тактов или 1 микросекунда. Очищаем Stopwatch и нажимаем кнопку продолжения программы (F5):
![Отладка программы](/media/screen-2.png) ![Отладка программы](/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) * [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) * [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 Delay Loop Calculator](http://darcy.rsgc.on.ca/ACES/TEI4M/AVRdelay.html)
- [AVR Timer Calculator](https://eleccelerator.com/avr-timer-calculator/) * [AVR Timer Calculator](https://eleccelerator.com/avr-timer-calculator/)