» » Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 1

 
 
 
25

Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 1

Разместил erbol 17 марта 2016. Просмотров: 14 798

Доброго вам дня, уважаемые граждане и гости Датагор.ру - этого замечательного сообщества увлечённых людей!
Мы с мальчишками (сыновья 9 и 14 лет) в поделках, требующих беспроводную связь, используем вот такой радио-модуль на базе трансивера nRF24L01+ от Nordic Semiconductor.

Внимание наше он привлек по нескольким причинам:
Низкая цена.
• Габариты – 15х29 мм (есть также вариант 12х15 мм) - в сочетании с микроконтроллером (МК) небольших размеров (например, ATtiny85) позволяют создавать вполне миниатюрные радио-блоки.
• Наличие всей необходимой обвязки, включая встроенную антенну.
• Низкое энергопотребление – 0.9 мкA в режиме Power Down – важный параметр при создании устройств с автономным питанием.
• Радиус действия до 30 м в помещении и 100 м на улице, с лихвой покрывает наши текущие потребности. Если этого недостаточно, существует вариант с усилителем RFX2401C и внешней антенной с заявленной дальностью до 1100 м.

О том, как настроить и использовать этот радио-модуль, я и хочу рассказать.

Основные характеристики трансивера nRF24L01+

• Рабочая частота - в диапазоне 2400-2525 МГц.
• Максимальная мощность в режиме передачи – 0 dBm.
• Максимальная чувствительность приёмника - (-94 dBm).
• Максимальная скорость передачи данных - 2 Мбит/с.
• Максимальная длина предаваемых за один раз данных - 32 байта.
• Количество одновременно доступных каналов связи - 6.
• Напряжение питания - от 1.9 до 3.6 Вольт.
Детальнее с характеристиками nRF24L01+ можно ознакомиться в документации производителя. См. даташит в файлах к статье.

Маркировка и назначение выводов модуля

Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 1

• SCK, MISO, MOSI, СSN - линии интерфейса SPI. Толерантны к напряжению 5В, однако в этом случае рекомендуемое напряжение питания трансивера - от 2.7 до 3.3В.
• CE - управляющий вход. Переключает трансивер, в зависимости от текущих настроек последнего, в один из четырех режимов - Standby-I, Standby-II, передатчик, приемник.
• IRQ - выход прерываний. Если трансивер находится в режиме передатчика, появление на этом выводе низкого уровня свидетельствует об одном из двух событий – 1) пакет данных успешно отправлен, 2) разрешенное количество попыток отправки израсходовано, но пакет данных так и не был отправлен. Для nRF24L01+ в режиме приёмника низкий уровень на выводе IRQ означает получение пакета данных.
• VCC, GND - напряжение питания и земля. Несколько раз я подал по невнимательности +5В на вывод VCC. Радио-модуль такое насилие не убило, но работать корректно при этом он все-же отказался. Обычно мы стараемся подобрать все остальные узлы устройства, включая МК, работающие, как и nRF24L01+, от 3В. Такой подход позволяет упростить общую схему и уменьшить энергопотребление. В противном случае - приходится использовать преобразователи напряжения.

Подключение и программирование nRF24L01+

Прежде, чем перейти к вопросам подключения и программирования трансивера, напомню, что МК от Atmel, а именно об их применении пойдёт речь, бывают как со встроенным аппаратным SPI, так и без оного. Более того, иногда бывает предпочтительным использование программного SPI даже при наличии аппаратного. Поэтому, чтобы статья была максимально полезной, будем рассматривать три способа организации этого интерфейса:
1. Аппаратный SPI на примере ATmega8 и ATmega328P,
2. SPI на базе модуля USI - своеобразного полу-фабриката, который путём не сложных действий можно преобразовать в SPI. Такой модуль имеется, в частности, на борту ATtiny2313, ATtiny25, ATtiny45 и ATtiny85.
3. Программный SPI. Этот вариант подойдёт для любого МК.

Что касается схемы сопряжения, то для начала мы остановимся на варианте, когда на каждый вывод радио-модуля приходится вывод МК. Это облегчит понимание сути вопроса и упростит код. А уже когда мы разберемся с программированием трансивера, я покажу менее разорительный способ подключения.

Итак, соединяем МК и радио-модуль по одной из подходящих вам схем, приведённых в Таблице №1, не забывая про выводы VCC и GND. Если в вашем распоряжении оказался не упомянутый в таблице микроконтроллер, подключайте, ориентируясь на столбец «вывод».


Для начала создадим две базовые функции, обеспечивающие работу SPI - 1) инициализации регистров и выводов, участвующих в протоколе и 2) обмена байтом данных.

Но, перед этим заглянем в спецификацию и выпишем определяемые ею параметры интерфейса:
1. Активный уровень вывода CSN – низкий.
2. Полярность тактового импульса – положительная, а обмен данными происходит по его переднему фронту.
3. Первый в очереди при записи/чтении – старший бит (как в командном слове, так и в байте данных).
4. В случае многобайтных данных первым записывается/считывается младший байт.
5. Максимальная скорость SPI - 10Мбит/с. При тактовой частоте МК в 16МГц мне не понадобилось организовывать задержки, так что привожу этот параметр в качестве общей информации.

Ну что ж, знаниями вооружились - начнём программировать. Местами я буду переносить повествование в комментарии к коду, так что пусть вас не пугает их избыточность.

Прописываем макросы.
Теперь две вышеуказанные функции для аппаратного SPI.
Они же - для SPI на базе USI.
И для программного SPI.
Собственно говоря, на этом все отличия в коде для МК с разным типом SPI исчерпаны. Остальная часть программы для всех трёх вариантов будет абсолютно одинаковой.

Теперь, когда мы знаем, как записывать в трансивер команды и данные, и получать информацию о состоянии его регистров, нужно разобраться, какими именно командами и регистрами необходимо оперировать. И тех, и других у nRF24L01+ хватает, но мы пока будем использовать только 7 команд и 3 регистра (смотри Таблицы 2, 3), чего вполне достаточно для организации простейшей связи между двумя радио-модулями.



Добавим в наш список макросов данные из вышеприведенных таблиц и продолжим написание программы.
Из Таблицы 2 вытекает три важных момента:
1. Обращение МК к nRF24L01+ возможно в двух форматах:
• команда,
• команда + байты данных.
2. По направлению движения информации команды можно разбить на две группы:
• команды чтения из трансивера
• команды записи в трансивер
3. Каждый раз, во время записи в него любой команды, трансивер выдаёт на линию MISO содержимое своего регистра STATUS.

Учтём это и, используя функцию SPI_byte(), создадим ещё три, назначение которых понятно из названий.
Ну вот мы и готовы оформить полноценный код, включая обработчик прерываний, для передатчика.

А теперь полноценный код для приёмника.

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

Пара слов для поклонников Arduino

Мне известны две библиотеки (RF24.h и Mirf.h) для работы Arduino с nRF24L01+, хотя не исключено, что есть и другие. Обе библиотеки, на мой взгляд, работают адекватно и достаточно полно охватывают возможности трансивера.

Однако, если вы решите написать скетч для не «родного», но поддерживаемого Arduino IDE МК (например, ATtiny25, ATtiny45 и ATtiny85), то эти библиотеки работать по понятным причинам не будут. В этом смысле материалы по программному SPI, изложенные в настоящей статье, могут вам пригодиться.

Ссылки

https://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01P

Файлы

Даташит на nRF24L01+
nrf24l01p_product_specification_1_0.7z 🕗 15/03/16 ⚖️ 961,96 Kb ⇣ 63

Заключение

В следующей части я, как и обещал, расскажу о более экономных способах соединения радио-модуля с МК.

Что касается аспектов использования радио-модуля, то тут есть только один предел – ваша фантазия, а она, как я убедился, у жителей Датагора безграничная.

Удачи всем вам!
Ербол (erbol)
Актобе, Казахстан
Профиль erbol
Мне 50 лет. Родился и вырос в г. Актюбинск (ныне - Актобе), Казахстан. Женат, воспитываю четверых прекрасных детей.

С программированием и электроникой имею может и не отдаленные, но весьма эпизодические отношения: в далекие и бурные 90-е годы аж прошлого века посчастливилось участвовать в автоматизации экспериментальной установки с использованием микропроцессорного комплекта КР580.

А пару лет назад мои сорванцы вдруг заинтересовались микроконтроллерами. Пришлось из дальних уголков памяти вытаскивать свои старые познания и стряхивать с них пыль.
 

Понравилось? Палец вверх!

  • всего лайков: 87

28 февраля 2017 изменил Datagor. Исправлены все замеченные на сегодня недостатки.

Поделись с друзьями!

Связанные материалы:


Схема на Датагоре. Новая статья Визуализация для микроконтроллера. Часть 3. TFT дисплей 2.8" (240х320) на ILI9341... Битва за урожай закончена, можно продолжить повествование. Полноцветный TFT-дисплей 240×320 ILI9341...
Схема на Датагоре. Новая статья Визуализация для микроконтроллера. Часть 2. TFT дисплей 1.8" (128х160) на ST7735... Следующий из рассматриваемых нами модулей обладает полноцветным дисплеем под управлением...
Схема на Датагоре. Новая статья Трансивер 2,4 ГГц Nordic Semiconductor nRF24L01. Перевод таблиц даташита, пояснения и коды для организации сети... Wireless Transceiver Module NRF24L01+ 2.4GHz, 4 шт. на Али Привет, датагорцы! Выкладываю перевод...
Схема на Датагоре. Новая статья Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 3... Wireless Transceiver Module NRF24L01+ 2.4GHz, 4 шт. на Али Приветствую всех настоящих и будущих...
Схема на Датагоре. Новая статья Беспроводной канал связи 2,4 ГГц на базе трансивера nRF24L01+ от Nordic Semiconductor. Часть 2... Продолжаем разговор. Как-то раз мы с пацанами решили соединить радио-модуль «nRF24L01+» вот с таким...
Схема на Датагоре. Новая статья Несколько функций для програмной реализации протокола I2C на AVR... Добрый день, дорогие друзья! Решил поделиться с вами несколькими функция для работы по протоколу...
Схема на Датагоре. Новая статья Частотный детектор на двухзатворном полевом транзисторе... Для демодуляции частотно-модулированных (далее – ЧМ) сигналов традиционно используют дробовый...
Схема на Датагоре. Новая статья Texas Instruments. Руководство по выбору компонентов для аналоговых схем... Операционные усилители, компараторы, буфферы, ЦАП/АЦП преобразователи данных, интерфейсы, схемы...
Схема на Датагоре. Новая статья Сделай сам простой активный фильтр для двухполосного усилителя... В статье речь пойдет об активном фильтре для двухполосного усилителя. Фильтр не нуждается в...
Схема на Датагоре. Новая статья Датчик угла поворота. Сельсин-датчик и приёмник на микроконтроллере.... Схема сельсин-датчика и программа микроконтроллера практически полностью взяты из журнала Радио №4...
Схема на Датагоре. Новая статья Акустическая система с лабиринтом 35ГДН–4 + 2ГД36... Недорогая акустическая система на доступных динамиках с лабиринтом, обладающая хорошим качеством...
Схема на Датагоре. Новая статья TDA7442D+ATmega8. Микропроцессорный регулятор громкости... Привет ВСЕМ!!! Интересно, кому бы не хотелось, чтобы его усь обладал сервисом промышленных...
  1. <

    StalKer-NightMan

    Игорь Читатель Датагора
    • Гражданин
    Комментарий # 1 от 17 марта 2016 12:40.
    Ответить
    • С нами с 15.03.2012
    • Ушёл в реал Пользователь offline
    • 96 комментариев
    • 1 публикация
     
    Хорошая статья. Спасибо.

  2. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 2 от 17 марта 2016 13:26.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    Спасибо, Игорь! smile

  3. <

    Datagor

    Игорь Котов Читатель Датагора
    • Главный редактор
    Комментарий # 3 от 17 марта 2016 15:55.
    Ответить
    • С нами с 25.02.2011
    • Ушёл в реал Пользователь offline
    • 2 069 комментариев
    • 273 публикации
     
    Ербол, спасибо за статью.
    Модули на Али заказал, жду продолжения! handshake

  4. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 4 от 17 марта 2016 17:33.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    Спасибо, Игорь! Продолжение - в работе smile

  5. <

    koan51

    Александр Читатель Датагора
    • Гражданин
    Комментарий # 5 от 18 марта 2016 19:07.
    Ответить
    • С нами с 18.03.2010
    • Ушёл в реал Пользователь offline
    • 60 комментариев
    • 5 публикаций
     
    Спасибо за хорошую статью.
    Файл из архива не открывается, пишет что поврежден.
    Архив на тест проходит.

  6. <

    Datagor

    Игорь Котов Читатель Датагора
    • Главный редактор
    Комментарий # 6 от 18 марта 2016 20:42.
    Ответить
    • С нами с 25.02.2011
    • Ушёл в реал Пользователь offline
    • 2 069 комментариев
    • 273 публикации
     
    Цитата: koan51
    Файл из архива не открывается, пишет что поврежден.
    Архив на тест проходит.
    Александр, такие вопросы следует писать мне в личку или через обратную связь или через систему жалоб.

    Ваше сообщение не подтверждается. С файлом и архивом всё в порядке.

  7. <

    Yamazaki

    Сергей Читатель Датагора
    • Гражданин
    Комментарий # 7 от 22 марта 2016 19:58.
    Ответить
    • С нами с 2.07.2009
    • Ушёл в реал Пользователь offline
    • 156 комментариев
    • 6 публикаций
     
    Ербол, вы упомянали о поделках на этих модулях. Расскажете о них что-нибудь?

  8. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 8 от 23 марта 2016 00:33.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    Добрый вечер, Сергей! Что может заинтересовать пацанов 9 и 14 лет? Машинки, элементы умного дома. Недавно кормушку для рыбок закончили, которая по совместительству выводит на TFT-дисплей температуру за окном. Как то так smile

  9. <

    demiurg1978

    Евгений Читатель Датагора
    • Кандидат
    Комментарий # 9 от 23 марта 2016 00:56.
    Ответить
    • С нами с 16.02.2014
    • Ушёл в реал Пользователь offline
    • 5 комментариев
    • 0 публикаций
     
    Родные чипы NRF24 дорогие. Поэтому, если задешево купили модули, то однозначно на чипах-аналогах. Когда делал один заказ, заказали модули с антеннами. Но их нужно было ждать. Поэтому, чтобы не ждать, купил в магазине модуль без антенны. Соображение было такое: чипы одинаковые, потренируюсь на этом. Программу написал, чтение-запись регистров прошло без проблем. А вот когда дело дошло передачи данных, тут всплыли нюансы. На модулях с антеннами вроде как родные чипы. На модуле без антенны аналог, Si24R1.

    Момент первый. Если модуль с антенной настроен на прерывания, то до установки пина модуля IRQ регистр статуса читать нельзя.

    Момент второй. Выявил совершенно случайно и после долгих поисков ошибки в программе. Нельзя использовать слово "TEST". Иначе модуль зависает на несколько секунд. Судя по всему это заводская команда для проверки работоспособности модулей. Более подробно я не разбирался, выявил причину и успокоился.

  10. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 10 от 23 марта 2016 01:19.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    Спасибо за полезную информацию, Евгений! smile Приму к сведению

  11. <

    UncleHarry

    Игорь Читатель Датагора
    • Гражданин
    Комментарий # 11 от 2 апреля 2016 14:58.
    Ответить
    • С нами с 28.04.2009
    • Ушёл в реал Пользователь offline
    • 17 комментариев
    • 0 публикаций
     
    Здравствуйте, Ербол! За статью большое спасибо.

    Но есть одна неточность в определении макросов

    // макрофункции установки/сброса выводов
    #define sbi(pin) SPI_PORT |= (1<<pin)
    #define cbi(pin) SPI_PORT &= ~(1<<pin)

    SPI_PORT нигде не определено, при замене в этих дефайнах SPI_PORT на nRF_PORT все компилируется без ошибок.

    Жду продолжения материала по работе с этими модулями! drinks

  12. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 12 от 2 апреля 2016 16:15.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    Цитата: UncleHarry
    Здравствуйте, Ербол! За статью большое спасибо.

    Но есть одна неточность в определении макросов...

    Добрый день, Игорь! smile
    Спасибо за обнаруженную неточность! Поправки будут внесеныhandshake
    Продолжение на подходе drinks

  13. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 13 от 2 апреля 2016 17:58.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    Игорь, а связь появилась между модулями? smile

  14. <

    UncleHarry

    Игорь Читатель Датагора
    • Гражданин
    Комментарий # 14 от 2 апреля 2016 18:17.
    Ответить
    • С нами с 28.04.2009
    • Ушёл в реал Пользователь offline
    • 17 комментариев
    • 0 публикаций
     
    Пока в процессе запуска. У меня Мега8 на самодельной макетке и Мега88 на самодельной макетке. Пока что Мегу8 надо поднять, дата-логгером буду смотреть общение меги и модуля по SPI. Уже бы поднял, но отвлекают домашние дела. Сегодня надеюсь запустить все это хозяйство. Отпишусь, как заработает.
    Было бы здорово, если бы к статье какой-нибудь полностью рабочий проект приложить. К примеру, термометр с одним удаленным датчиком (мега88+DS18B20). В эту сторону я предполагаю двинуться в продолжении работы с этими модулями. blush

  15. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 15 от 2 апреля 2016 18:24.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    В третьей части как раз ds18b20 будет smile Там, правда, для Ардуино, но код на Си, подходит и под Студию

  16. <

    UncleHarry

    Игорь Читатель Датагора
    • Гражданин
    Комментарий # 16 от 2 апреля 2016 18:48.
    Ответить
    • С нами с 28.04.2009
    • Ушёл в реал Пользователь offline
    • 17 комментариев
    • 0 публикаций
     
    Ардуино предполагается просто как аппаратная платформа? Или с использованием ардуиновских библиотек?

  17. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 17 от 2 апреля 2016 18:53.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    В части общения с термометром и радио-модулем как платформа, а вывод на терминал - через ардуиновскую библиотеку

  18. <

    UncleHarry

    Игорь Читатель Датагора
    • Гражданин
    Комментарий # 18 от 2 апреля 2016 19:21.
    Ответить
    • С нами с 28.04.2009
    • Ушёл в реал Пользователь offline
    • 17 комментариев
    • 0 публикаций
     
    Цитата: erbol
    В части общения с термометром и радио-модулем как платформа, а вывод на терминал - через ардуиновскую библиотеку

    Неплохо! Будем ждать новую статью!

  19. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 19 от 2 апреля 2016 19:26.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    Игорь, я исчерпал лимит сообщений. Если не хочется ждать до 3-й части, напишите мне на erbol_ts@mail.ru, а ещё лучше в Агенте по этому же адресу - я вам куски по ds18b20 скину smile

  20. <

    UncleHarry

    Игорь Читатель Датагора
    • Гражданин
    Комментарий # 20 от 2 апреля 2016 19:50.
    Ответить
    • С нами с 28.04.2009
    • Ушёл в реал Пользователь offline
    • 17 комментариев
    • 0 публикаций
     
    Цитата: erbol
    Игорь, я исчерпал лимит сообщений. Если не хочется ждать до 3-й части, напишите мне на erbol_ts@mail.ru, а ещё лучше в Агенте по этому же адресу - я вам куски по ds18b20 скину smile

    Такая же ерунда с лимитом сообщений (привет, модератор! bye ). На связь в агент выйду чуть позже сегодня, заранее спасибо! drinks

  21. <
    • Прохожий
    Комментарий # 21 от 5 января 2017 15:50.
    Ответить
    • С нами с --
    • 0 комментариев
    • 0 публикаций
     
    отлично всё расписано, один вопрос, ваш код под CVAVR нужно переделывать?

  22. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 22 от 9 января 2017 13:07.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    Цитата: Vlad-Libra
    отлично всё расписано, один вопрос, ваш код под CVAVR нужно переделывать?

    Спасибо, Владислав!) Я не работал в CodeVision, но из того, что видел, могу предположить следующее. Поскольку непосредственного обращения к отдельным пинам в коде нет (т.е. специфические конструкции CV типа "PORTB.1" отпадают), а обращение к портам в CV и AtmelStudio одинаковые (например, PORTx =| (value << pin), то переделка вроде как не потребуется. Хотя, лучше всё-же обратиться к специалистам)

  23. <

    maddiego

    Тимур Читатель Датагора
    • Гражданин
    Комментарий # 23 от 20 февраля 2017 17:39.
    Ответить
    • С нами с 2.08.2016
    • Ушёл в реал Пользователь offline
    • 25 комментариев
    • 8 публикаций
     
    Цитата: demiurg1978
    На модулях с антеннами вроде как родные чипы. На модуле без антенны аналог, Si24R1.


    Очень заинтересовали данные модули и я нашёл в Интернете фотографию, слева вроде оригинал, справа аналог на Si24R1. Видно даже что на плате нет маркировки и чипы более дешёвые.



    Заказал парочку, буду химичить yum

  24. <

    Variator

    Эльдар Читатель Датагора
    • Кандидат
    Комментарий # 24 от 18 мая 2018 14:51.
    Ответить
    • С нами с 7.10.2010
    • Ушёл в реал Пользователь offline
    • 8 комментариев
    • 0 публикаций
     
    Спасибо за отличный материал Ербол. Вопрос относительно функции: nRF_read_register. Объясните пожалуйста, какая смысловая нагрузка на условие: if(reg != STATUS) . На сколько я понимаю данное условие никогда не будет выполняться. Спасибо.

  25. <

    erbol

    Ербол Читатель Датагора
    • Гражданин
    Комментарий # 25 от 22 мая 2018 10:29.
    Ответить
    • С нами с 11.12.2014
    • Ушёл в реал Пользователь offline
    • 74 комментария
    • 9 публикаций
     
    Цитата Variator
    Спасибо за отличный материал Ербол. Вопрос относительно функции: nRF_read_register. Объясните пожалуйста, какая смысловая нагрузка на условие: if(reg != STATUS) . На сколько я понимаю данное условие никогда не будет выполняться. Спасибо.


    Спасибо, Эльдар. Это условие выполняется, если читается любой регистр, кроме STATUS. В последнем случае достаточно отправки одного байта с мнемоникой регистра

Добавление комментария


Налетай! Паяльники, станции, жала с доставкой
  • smilelolbyewinkyahoocoollaughing
    crazybadcryingsadirefulsickstraight
    ballooncakegooddrinksmailbombsun
    nightrainstarscolddashguitar-manhandshake
    musicnegativenopardonshoksleepunknown
    wackoyawnblushbullyhashsmokingwhew
Скопируйте текст вашего комментария на случай неверного ответа на контрольный вопрос.