NRF24L01, NRF24L01+
Re: NRF24L01, NRF24L01+
Для NRF24L01 пойдёт любой МК ... хоть мега... хоть тинька.
Последний раз редактировалось roman.com Сб окт 06, 2018 18:29:13, всего редактировалось 1 раз.
- Реклама
- Mishany
- Электрический кот
- Сообщения: 1031
- Зарегистрирован: Чт июн 20, 2013 00:00:58
- Откуда: москва, м.Сходненская
Re: NRF24L01, NRF24L01+
тини13а с програмным spi должна подойти, ног хватит
Re: NRF24L01, NRF24L01+
Да, тини13 пойдет. - 5 ног (не сичтая ресет) - какраз столько и надо для NRF24L01.
- java
- Держит паяльник хвостом
- Сообщения: 962
- Зарегистрирован: Вт янв 04, 2011 13:26:17
- Откуда: Лен.Обл.
Re: NRF24L01, NRF24L01+
Не нашёл я что-то готовых проектов на тини13, и где то давно ещё читал что у неё spi только на вход.
а вот на Attiny85 кое что проскакивает, вечером почитаю по подробней.
а вот на Attiny85 кое что проскакивает, вечером почитаю по подробней.
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
Re: NRF24L01, NRF24L01+
Это где такие глупости пишут? ))java писал(а):где то давно ещё читал что у неё spi только на вход.
Есть проект на меги8 - viewtopic.php?f=3&t=148123&start=25java писал(а):Не нашёл я что-то готовых проектов на тини13
который быстро (за 5 минут) переделывается в проект на тини13... если есть чёткое описание принципа работы (тех задание).
- Реклама
- Mishany
- Электрический кот
- Сообщения: 1031
- Зарегистрирован: Чт июн 20, 2013 00:00:58
- Откуда: москва, м.Сходненская
Re: NRF24L01, NRF24L01+
открою секрет, в тини13/85 вообще нет аппаратного спи
Re: NRF24L01, NRF24L01+
Посмотрел даташит... Да, по даташиту нет)) А программный SPI не подходит? Почему?
- Mishany
- Электрический кот
- Сообщения: 1031
- Зарегистрирован: Чт июн 20, 2013 00:00:58
- Откуда: москва, м.Сходненская
Re: NRF24L01, NRF24L01+
я сразу писал про программный спи на тиньке
Re: NRF24L01, NRF24L01+
тини13 -- все-таки не лучший вариант из-за ограниченности ресурсов.
- Mishany
- Электрический кот
- Сообщения: 1031
- Зарегистрирован: Чт июн 20, 2013 00:00:58
- Откуда: москва, м.Сходненская
Re: NRF24L01, NRF24L01+
для одной команды в самый раз
Re: NRF24L01, NRF24L01+
Доброе время суток!
У меня домашняя метеостанция на этих модулях, один модуль был на балконе, раз в несколько секунд слал данные (температура, влажность, давление) на модуль в комнате, данные приходили как правило, пакеты редко терялись.
Купил естественно в Китае, по 40р штука.
Микроконтроллер STM32F103, модуль blue pill.
В регистрах делал минимум изменений, режим ESBst, то есть с автоматическим подтверждением получения пакета, для этого ничего не менял, адреса pipe0 и Tx уже стоят в этих модулях 0xE7E7E7E7E7, я устанавливал в приёмном модуле значение payload в pipe0 равное 5 байтам, ну и соответственно в регистре конфиг включал модуль (PWR_UP), и в приёмнике RX=1.
И всё это работало несколько месяцев.
Потом я решил переписать инициализацию железа, сделал всё на регистрах и CMSIS, всё остальное осталось как было, после этого перестала работать передача, или приём, чёрт его знает на самом деле...)
Пробовал менять NRF модули между собой, всего их у меня 4 штуки.
Отладку произвожу в Visual Studio в связке с VisualGDB, и при запуске программы на чипе STM32 в режиме отладки, проходит самая первая посылка и далее тишина)) когда чип работает не в режиме отладки, ничего не передаётся вообще.
Вывожу значения всех регистров по UART - все значения какими и должны быть стандартные при инициализации NRF, те которые я менял имеют установленные мной значения.
Что ещё происходит - через каждые 3 передачи (или попытки передачи) происходит заполнение буфера TX FIFO и он очищается.
могу выложить значения регистров кому интересно.
Кондёры по питанию ставить не пробовал, если надо, то уточните пожалуйста номиналы, потому как на разных форумах пишут разное.
У меня домашняя метеостанция на этих модулях, один модуль был на балконе, раз в несколько секунд слал данные (температура, влажность, давление) на модуль в комнате, данные приходили как правило, пакеты редко терялись.
Купил естественно в Китае, по 40р штука.
Микроконтроллер STM32F103, модуль blue pill.
В регистрах делал минимум изменений, режим ESBst, то есть с автоматическим подтверждением получения пакета, для этого ничего не менял, адреса pipe0 и Tx уже стоят в этих модулях 0xE7E7E7E7E7, я устанавливал в приёмном модуле значение payload в pipe0 равное 5 байтам, ну и соответственно в регистре конфиг включал модуль (PWR_UP), и в приёмнике RX=1.
И всё это работало несколько месяцев.
Потом я решил переписать инициализацию железа, сделал всё на регистрах и CMSIS, всё остальное осталось как было, после этого перестала работать передача, или приём, чёрт его знает на самом деле...)
Пробовал менять NRF модули между собой, всего их у меня 4 штуки.
Отладку произвожу в Visual Studio в связке с VisualGDB, и при запуске программы на чипе STM32 в режиме отладки, проходит самая первая посылка и далее тишина)) когда чип работает не в режиме отладки, ничего не передаётся вообще.
Вывожу значения всех регистров по UART - все значения какими и должны быть стандартные при инициализации NRF, те которые я менял имеют установленные мной значения.
Что ещё происходит - через каждые 3 передачи (или попытки передачи) происходит заполнение буфера TX FIFO и он очищается.
могу выложить значения регистров кому интересно.
Кондёры по питанию ставить не пробовал, если надо, то уточните пожалуйста номиналы, потому как на разных форумах пишут разное.
- Mishany
- Электрический кот
- Сообщения: 1031
- Зарегистрирован: Чт июн 20, 2013 00:00:58
- Откуда: москва, м.Сходненская
Re: NRF24L01, NRF24L01+
намудрил с проверкой флагов по передачи/приема по SPI
Re: NRF24L01, NRF24L01+
Почему все упорно используют всякие pipe0... ACK...
Оно тебе действительно очень надо? ))
Лично я при инициализации NRF24L01+ первым делом отключаю всякие pipe0... ACK...
После этого у меня всё работает идеально ! )) https://radiokot.ru/forum/viewtopic.php?f=28&t=159826
Лично я при инициализации NRF24L01+ первым делом отключаю всякие pipe0... ACK...
После этого у меня всё работает идеально ! )) https://radiokot.ru/forum/viewtopic.php?f=28&t=159826
Re: NRF24L01, NRF24L01+
[uquote="Mishany",url="/forum/viewtopic.php?p=3682727#p3682727"]намудрил с проверкой флагов по передачи/приема по SPI[/uquote]
У передатчика флаг TX_DS не устанавливается, потому что данные не отправляются, у приёмника RX_DR не устанавливается потому что данные не принимаются.
Что там ещё можно намудрить с флагами?)
Один только TX_FULL периодически устанавливается у передатчика и всё.
Добавлено after 5 minutes 23 seconds:
[uquote="roman.com",url="/forum/viewtopic.php?p=3682772#p3682772"]Почему все упорно используют всякие pipe0... ACK...
Оно тебе действительно очень надо? ))
Лично я при инициализации NRF24L01+ первым делом отключаю всякие pipe0... ACK...
После этого у меня всё работает идеально ! )) https://radiokot.ru/forum/viewtopic.php?f=28&t=159826[/uquote]
Отключал ACK, абсолютно ничего не поменялось, как не было связи так и нет.
А чем pipe0 хуже работает чем например pipe1 или pipe5?)
То есть переключусь на pipe2, скажем, и все сразу заработает?)
Не работает оно потому что это китайское говно, которое надо заставлять работать и даже если тебе это удастся в конце концов, ты никогда не можешь быть уверен что оно не откажет в самый неподходящий момент...
У передатчика флаг TX_DS не устанавливается, потому что данные не отправляются, у приёмника RX_DR не устанавливается потому что данные не принимаются.
Что там ещё можно намудрить с флагами?)
Один только TX_FULL периодически устанавливается у передатчика и всё.
Добавлено after 5 minutes 23 seconds:
[uquote="roman.com",url="/forum/viewtopic.php?p=3682772#p3682772"]Почему все упорно используют всякие pipe0... ACK...
Лично я при инициализации NRF24L01+ первым делом отключаю всякие pipe0... ACK...
После этого у меня всё работает идеально ! )) https://radiokot.ru/forum/viewtopic.php?f=28&t=159826[/uquote]
Отключал ACK, абсолютно ничего не поменялось, как не было связи так и нет.
А чем pipe0 хуже работает чем например pipe1 или pipe5?)
То есть переключусь на pipe2, скажем, и все сразу заработает?)
Не работает оно потому что это китайское говно, которое надо заставлять работать и даже если тебе это удастся в конце концов, ты никогда не можешь быть уверен что оно не откажет в самый неподходящий момент...
Re: NRF24L01, NRF24L01+
В NRF24L01+ есть куча настроек и режимов. Там можно всё включать и отключать. Даже CRC можно отключить.Millyvolt писал(а):есть переключусь на pipe2, скажем, и все сразу заработает?)
Есть ещё куча тестовых режимов... NRF24L01+ может вообще работать в режиме OOK модуляции ))
Я не использую никаких pipe... (я просто отключаю режим Enhanced ShockBurst): Я не использую никаких MultiCeiver: Я использую режим совместимости со старыми версиями: У меня ещё ни разу не отказывало. ))
Re: NRF24L01, NRF24L01+
Как можно не использовать pipe? Может вы поменяли архитектуру чипа?)
Если вы не используете никаких pipe, значит вы скорее всего используете pipe0, который настроен по умолчанию.
Своей библиотекой пользуетесь?
Да, ACK, он же ESB, можно отключить, записью в один регистр. Это помогает когда вместе используются NRF поддельные и оригинальные, или качественные подделки и менее качественные, которые инвертируют бит в посылке.
У меня подделки одной партии, между собой не отличающиеся, поэтому мне это отключение ACK не поможет, одинаково хреново с ним и без))
Если вы не используете никаких pipe, значит вы скорее всего используете pipe0, который настроен по умолчанию.
Своей библиотекой пользуетесь?
Да, ACK, он же ESB, можно отключить, записью в один регистр. Это помогает когда вместе используются NRF поддельные и оригинальные, или качественные подделки и менее качественные, которые инвертируют бит в посылке.
У меня подделки одной партии, между собой не отличающиеся, поэтому мне это отключение ACK не поможет, одинаково хреново с ним и без))
Re: NRF24L01, NRF24L01+
архитектуру чипа я не менял))
[uquote="roman.com",url="/forum/viewtopic.php?p=3683468#p3683468"]Я не использую никаких pipe...[/uquote]
Правильней сказать так: я всегда использую только pipe0, который настроен по умолчанию.
Я использую NRF24L01+ для радиоуправления, умного дома и т.д.
Я не использую никакие Enhanced ShockBurst, MultiCeiver, ACK, RETR (Automatic Retransmission) и т.д.
Я не использую флаги TX_DS, RX_DR, TX_FULL и т.д. Я не использую Interrupt IRQ (только STATUS).
Всё это мешает радиоуправлению.
Я меняю все параметры NRF24L01+ программно (Адрес, Выходная мощность, Частота и т.д.).
Всё прекрасно работает. https://www.youtube.com/watch?v=QPIcjcUwXwU
[uquote="roman.com",url="/forum/viewtopic.php?p=3683468#p3683468"]Я не использую никаких pipe...[/uquote]
Правильней сказать так: я всегда использую только pipe0, который настроен по умолчанию.
Я использую NRF24L01+ для радиоуправления, умного дома и т.д.
Я не использую никакие Enhanced ShockBurst, MultiCeiver, ACK, RETR (Automatic Retransmission) и т.д.
Я не использую флаги TX_DS, RX_DR, TX_FULL и т.д. Я не использую Interrupt IRQ (только STATUS).
Всё это мешает радиоуправлению.
Я вообще не пользуюсь библиотеками)) Я просто прописываю все регистры NRF24L01+ в программе (через функции) и всё))Millyvolt писал(а):Своей библиотекой пользуетесь?
Я меняю все параметры NRF24L01+ программно (Адрес, Выходная мощность, Частота и т.д.).
Всё прекрасно работает. https://www.youtube.com/watch?v=QPIcjcUwXwU
Re: NRF24L01, NRF24L01+
Вот только начал знакомиться с этими радиомодулями...roman.com писал(а):
Я не использую никакие Enhanced ShockBurst, MultiCeiver, ACK, RETR (Automatic Retransmission) и т.д.
И мне тоже надо отказаться от ACK и все что там наворочено для максимально быстрой передачи N десятков байт туда,
и потом получить ответ обратно. Т.е. если рассматривать 2 устройства, то с точки зрения приема/передачи они равносильны,
просто мастер всегда первым спрашивает, а подчиненный должен ответить.
Рассчитывал, что удастся связать 2 устройства при помощи прописки перекрестных значений адресов TX_ADDR и RX_ADDR_0
в этих модулях: У одного TX_ADDR = 2, RX_ADDR_0 = 1, у другого TX_ADDR = 1, RX_ADDR_0 = 2 - так получиться связать их или нет?
Но у меня проблема подружиться с радиомодулем:
1) при включении питания и проверке регистра CONFIG я вижу это: PWR_UP, PTX, CRC_2B - что уже противоречит значениям по умолчанию из документации ! (использую мыслимые и немыслимые задержки после включения перед проверкой регистра).
Сделать PWR_UP = 0 и CRC_1B не позволяет (просто ничего не меняется в регистре).
2) Запись в EN_AA 0x00 ни к чему не приводит, значение в регистре остается предыдущим (3F).
Обманным путем удалось установить EN_AA = 0x02, EN_RXADDR = 0x01. Но не этого хочется достичь.
3) Запись в регистр SETUP_RETR 0x00 не проходит, минимум что дает 0x01. - 1 ретрансмиссия.
Кто сталкивался с подобными явлениями, помогите, плиз.
Казалось все по документации ясно и понятно, хочешь использовать фичи, пользуй, не хочешь, отключай, а отключить не дает.
Может регистры зависимые, и железяка хочет строгого порядка установки их?
P.S. Модуль EBYTE E01-2G4M27D
Re: NRF24L01, NRF24L01+
нет никакой зависимости...Garry1301 писал(а):Может регистры зависимые, и железяка хочет строгого порядка установки их?
нет никакой последовательности...
запись регистров рекомендуется производить при отключенном выводе CE (логический "0").
тут рабочий проект на NRF24L01, NRF24L01+...
https://www.radiokot.ru/forum/viewtopic ... 8&t=185219
Re: NRF24L01, NRF24L01+
Спасибо, посмотрю.roman.com писал(а): тут рабочий проект на NRF24L01, NRF24L01+...
https://www.radiokot.ru/forum/viewtopic ... 8&t=185219
Я нашел баг у себя в программе, под общую защиту от нулов и нулевых длин попали и функции SPI с передачей по значению
Вот нули и не проходили.


