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

 

Как работать с прерываниями в 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 векторов прерывания. Это значит, что несколько источников могут быть «приписаны» к одному вектору, то есть указателю к функции обработчика прерывания. Нужно учитывать, что механизм прерываний поддерживает одновекторный и мультивекторный режимы. При одновекторном режиме в таблице исключений будет представлен один вектор для прерываний, и, следовательно, будет лишь один обработчик прерываний. Многовекторный режим предоставляет возможность работать с прерываниями в собственных обработчиках, тем самым повышая гибкость и читабельность программы. Давайте начнем разбирать это на примерах и потихоньку вникать во все тонкости прерываний.