цифровая электроника
вычислительная техника
встраиваемые системы

 



Как использовать прерывания Arduino для обнаружения пользовательского ввода

Автор: Mike(admin) от 23-11-2023, 03:55

Некоторым программам Arduino необходимо своевременно реагировать на конкретные важные события. Одним из примеров такого события является обнаружение нажатия кнопок. В идеале Arduino должен реагировать на ввод как можно скорее. Однако повторное считывание состояния цифрового контакта, к которому подключена кнопка, не является хорошим решением. Лучший способ добиться такого поведения – использовать прерывания Arduino. В данном материале рассмотрим различные типы прерываний и способы их использования в ваших собственных программах Arduino.


Как использовать прерывания Arduino для обнаружения пользовательского ввода

Источники прерываний и таблица векторов прерываний в микропроцессорах MCS-51

Автор: Mike(admin) от 5-01-2020, 08:35

Одной из наиболее мощных и важных функций в микропроцессорах MCS-51, которые также иногда называют микроконтроллерами благодаря встроенным в них периферийным блокам, является обработка прерываний. Как мы уже выяснили, в большинстве процессов реального времени для правильной обработки определенных условий текущая задача должна быть приостановлена на некоторое время, произведена обработка возникшего события, и затем процессор должен вернуться к основной задаче. Для выполнения программ такого типа необходимы прерывания. Этот подход полностью отличается от метода опроса, в котором процессор должен последовательно проверять каждое устройство и спрашивать, требуется ли обработка или нет, потребляя при этом больше процессорного времени.


Что такое прерывания в микропроцессорных системах

Что такое прерывания в микропроцессорных системах

Автор: Mike(admin) от 19-12-2019, 04:35

Прерывание – это состояние, при котором микропроцессор временно работает над другой задачей, а затем позже возвращается к своей предыдущей задаче. Прерывания могут быть внутренними или внешними. Внутренние прерывания, или «программные прерывания», активируются программной инструкцией и действуют аналогично инструкции перехода. Внешнее прерывание или «аппаратное прерывание» вызывается внешним аппаратным модулем. Например, многие процессорные системы используют модуль ввода/вывода, управляемый прерываниями. Процессор останавливает то, что он делает, считывает входной сигнал, а затем возвращается к текущей программе. Эту процедуру можно представить в виде следующего рисунка.


Что такое прерывания в микропроцессорных системах

Как работать с прерываниями в Arduino

Автор: Mike(admin) от 17-04-2017, 17:35

Прерывание – это метод, с помощью которого микроконтроллер перенаправляет программу с текущего пути выполнения кода в другую, специальную область кода, чтобы сделать некоторые важные вещи, требующие немедленной обработки. Код, который активируется для обработки всякий раз, когда происходит прерывание, называется обработчиком прерываний, в иностранных источниках этому термину соответствует аббревиатура ISR или Interrupt Service Routine. Как только прерывание происходит, контроллер прекращает свою текущую обработку и начинает выполнение кода ISR, он возвращается к предыдущей задаче лишь только после того, как закончит выполнение кода в ISR.


Как работать с прерываниями в Arduino

Поскольку основой платы Arduino является микроконтроллер (зачастую ATmega), то в Arduino также можно организовывать прерывания, что может быть полезно в некоторых задачах. В данном проекте будет реализован простой генератор переменной частоты с индикацией благодаря функции прерывания.

Радиомодуль NRF24LE1 и прерывания

Автор: Mike(admin) от 22-11-2016, 07:05

В нашей повседневной жизни мы отвлекаемся или прерываемся от текущих дел другими людьми или ситуациями много раз. В таком состоянии мы приостанавливаем нашу текущую работу и обращаем внимание на то, что говорят другие, или что происходит вокруг. Мы возобновляем нашу ранее приостановленную работу только после завершения разговора с человеком или разрешения внешней ситуации. Контроллер может работать аналогичным образом, и NRF24LE1 не является исключением.


Радиомодуль NRF24LE1 и прерывания

В этом материале мы рассмотрим работу с прерываниями в рамках радиомодуля NRF24LE1. В примере с интерфейсом UART один раз мы использовали прерывание, здесь же рассмотрим эту тему подробнее.

Правила использования прерываний

Автор: Mike(admin) от 6-09-2013, 18:00

В статье предлагается ряд простых правил, упрощающих разработку приложений, использующих прерывания.


I love Interrupts

  • Постарайтесь делать обработчик прерываний как можно короче. В идеале он должен быть не более полстраницы кода на языке C. Если пишите на ассемблере, то постарайтесь уместить код максимум на одной странице. Длинные обработчики, могут нарушить время работы программы.

  • Время выполнения кода в обработчике также должно быть сведено к минимуму. 100-200 тактовых циклов хватит вполне, хотя насчет точного количества можно подискутировать. Если вам нужно много чего обработать, то лучше сгрести данные в буфер ожидания и позволить основному циклу или подпрограмме не-обработчика сделать все остальное.

  • Стоит знать наихудшее время выполнения обработчика, тогда можно планировать программу для работы в реальном времени. Избегайте циклов, потому что они делают проблемные места еще «проблемнее», и программа может войти в бесконечный цикл из-за мелочи, о которой вы даже не подозревали.

Микроконтроллеры семейства PIC32. Прерывания.

Автор: Mike(admin) от 29-08-2013, 13:18

Говоря простым языком, прерывание это какое-либо внешнее или внутреннее событие, требующее от процессора немедленной реакции на него. При этом выполнение текущей программы на время завершается, процессор сохраняет значения служебных регистров, входит в обработчик прерывания, обрабатывает это прерывание, по выходу восстанавливает служебные регистры и вновь возвращается к месту выполнения основной программы, на котором его прервали. Вообще, в ядре MIPS (а в PIC32 используется именно оно) все прерывания попадают в категорию исключений. К исключениям здесь относится все, что «мешает» нормальной работе основной программы. Например, выполнение процедуры сброса – исключение, ошибка при делении – исключение, и, конечно же, различные прерывания, как внутренние, так и внешние, тоже исключения.


Прерывания


В PIC32 имеются 96 источников прерывания и 64 векторов прерывания. Это значит, что несколько источников могут быть «приписаны» к одному вектору, то есть указателю к функции обработчика прерывания. Нужно учитывать, что механизм прерываний поддерживает одновекторный и мультивекторный режимы. При одновекторном режиме в таблице исключений будет представлен один вектор для прерываний, и, следовательно, будет лишь один обработчик прерываний. Многовекторный режим предоставляет возможность работать с прерываниями в собственных обработчиках, тем самым повышая гибкость и читабельность программы. Давайте начнем разбирать это на примерах и потихоньку вникать во все тонкости прерываний.