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

 

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

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

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


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

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


Процесс работы микроконтроллера с прерыванием выглядит примерно так: он приостанавливает выполнение текущего кода, сохраняет текущее состояние и начинает заниматься обработкой прерывания. По выходу из прерывания он восстанавливает свое предыдущее состояние и снова начинает выполнение основного кода с точки, где его прервали.


В NRF24LE1 насчитывается 18 источников прерываний, из которых 4 являются аппаратными, а остальные программными. Каждый источник прерываний имеет адрес вектора, по которому будет работать обработчик прерывания. В 32-выводном корпусе есть 2 внешних аппаратных прерывания: INT0 и INT1. Линия INT0 соответствует пятому выводу порта 0 (P0.5), а линия INT1 соответствует шестому выводу порта 0 (P0.6). Прерываними можно управлять с помощью различных регистров, описанных ниже.


IEN0 (Регистр разрешения прерывания 0) – 8-битный регистр, используемый для разрешения / запрета глобальных прерываний, а также индивидуальных прерываний таймеров Timer0, Timer1, Timer2, порта 0 и порта последовательной передачи данных.


IEN1 (Регистр разрешения прерывания 1) – 8-битный регистр, используемый для разрешения / запрета прерываний от SPI, радиочастотного модуля и таймера Timer2.


INTEXP – этот регистр разрешает / запрещает прерывания от двухпроводной передачи данных, ведущего и ведомого SPI. Этот регистр также используется для выбора между INT0, INT1.


IP0 и IP1 (регистры приоритета прерываний) – два 8-разрядных регистра, используемые для установки уровней приоритета среди различных источников.


IRCON (регистр управления запросом прерываний) – 8-битовый регистр, который содержит флаги запроса прерываний.




В данном примере рассмотрим работу с внешним прерыванием на INT0. С помощью следующих шагов мы настроим функционирование источника прерываний INT0. Во-первых, нужно записать 1 в седьмой бит и нулевой бит регистра IEN0, чтобы разрешить глобальные прерывания. Далее следует записать 1 в третий бит регистра INTEXP для выбора INT0. И в конечном итоге мы должны написать обработчик прерываний для INT0. Напишем программу, которая заставляет мигать светодиод всякий раз, когда происходит внешнее прерывание. Схема подключения представлена ниже.


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

Код программы:



#include"reg24le1.h" // Заголовочный файл для NRF24LE1
#include<stdint.h> // Заголовочный файл со стандартными функциями ввода/вывода
#include"hal_delay.h" // Заголовочный файл с функциями задержки
#include"isrdef24le1.h" // Заголовочный файл с определениями обработчиков прерываний NRF24LE1
 

void main()
{
P0DIR = 0xf0; // 4 старших бита порта 0 на вход
P1DIR = 0;  // порт 1 на выход
P1 = 0x00; // все линии порта 1 в лог. 0
IEN0 = 0x81; // разрешаем прерывания с выводов
INTEXP = 0x08; // разрешаем INT0
while(1); // бесконечный цикл
 
}
 
// обработчик прерываний
EXT_INT0_ISR()
{
P1 = 0xff; // все линии порта 1 в лог. 1
delay_ms(1000); // задержка 1 секунда
P1 = 0x00; // все линии порта 1 в лог. 0
delay_ms(1000);  // задержка 1 секунда
}



© digitrode.ru


Теги: NRF24LE1, прерывания



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий