Форум программистов, компьютерный форум, киберфорум
Цифровая обработка сигналов
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.97/39: Рейтинг темы: голосов - 39, средняя оценка - 4.97
5 / 5 / 0
Регистрация: 25.02.2010
Сообщений: 15
1

NRF24L01 - Игнорируются одинаковые пакеты

24.11.2013, 17:42. Показов 7207. Ответов 11
Метки нет (Все метки)

Всем доброго дня.

Не могу найти решения проблемы: при отправке одинаковых пакетов, все после первого игнорируются.
Т.е. при отправки 1,1,2 принимается только 1 и 2.

Если добавлять рандомные данные в хвост, то все передается нормально. Но это все же костыль, хотелось бы без него.

Может кто наступал?
PS: NRF24L01, подключал к тинькам, к армам, писал на с, асме - результат везде один.
0

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

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2013, 17:42
Ответы с готовыми решениями:

stm32f4+NRF24L01 связать с arduino+NRF24L01
Нужно связать два блока: ведущий на stm32f4 ведомый на arduino. Есть платки NRF24L01 и куча...

Игнорируются все условия.
Здравствуйте, дорогие форумчане. Доброго вам времени суток. Прошу помочь мне с кодом. Задача...

Игнорируются инструкции кода
В учебнике есть вот такой пример: package booldemo; public class BoolDemo { ...

Игнорируются условные операторы =(
Задача: Написать консольную программу которая должна выполнять следующие действия: • Если число...

11
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 1,112
24.11.2013, 18:04 2
После передачи нужно делать FLUSH_TX, а после приема FLUSH_RX.
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
25.11.2013, 13:55 3
А не это ли

?
PID
Поле PID на 2 бита используется, чтобы определить, получен новый пакет или ретранслирован. PID препятствует тому, чтобы устройство PRX переслало те же данные несколько раз в MCU. Поле PID инкрементируется в TX для каждого нового пакета, полученного через SPI.
Поля PID и CRC используются устройством PRX, чтобы определить какой был пакет старый или новый . Когда несколько пакетов данных потеряны при связи, поля PID могут стать равными последнему полученному PID.
Если пакет имеет тот же PID как в предыдущем пакете, RFM73 сравнивает суммы CRC от обоих пакетов. Если суммы CRC также равны, последний полученный пакет считается копией ранее полученного пакета и отбрасывается.
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 1,112
25.11.2013, 14:46 4
Поэтому нужно чистить буфер приема и каждый новый принятый пакет будет считаться новым. По крайней мере в железе работает.
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
25.11.2013, 14:57 5
А это не тот же костыль?
2TC
И кстати а как програмно устроен повтор одинаковых пакетов , если SPI не участвует то PID не ++ .
0
0 / 0 / 0
Регистрация: 18.03.2010
Сообщений: 1,112
25.11.2013, 16:05 6
Можно перепослать данные в буфере передачи.
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
25.11.2013, 16:34 7
Да , но PID не увеличится и приемник проигнорирует данные т.к. и CRC одинаковые
0
5 / 5 / 0
Регистрация: 25.02.2010
Сообщений: 15
26.11.2013, 14:12 8
А обратиться к PID непосредственно я сам не могу ведь?
И вот еще, если я после каждой передачи отключаю передатчик от питания, то наверно там PID обнуляется. Следовательно надо очищать буффер на приемнике. Но я это делаю и это не помогает. Пойду дальше разбираться.
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
26.11.2013, 14:49 9
Нет не можешь - это структура пакета формируемая самой микрухой. Пойди с начала - попробуй передать каждый (1,1,2) передатчику по SPI. Посмори что получишь , если всё нормуль. Поиграйся с режимами сна передатчика
0
5 / 5 / 0
Регистрация: 25.02.2010
Сообщений: 15
26.11.2013, 15:43 10
Путем перебора разных комбинаций получилось передавать одинаковые пакеты, но только при постоянно включенном модуле.
Наверно есть смысл слать два разных пакета, после чего физически отключать передатчик. Надо попробовать...
0
0 / 0 / 0
Регистрация: 02.10.2012
Сообщений: 1,946
26.11.2013, 15:46 11
Путем перебора разных комбинаций получилось передавать ....
Какие-то зашифрованные ответы
0
5 / 5 / 0
Регистрация: 25.02.2010
Сообщений: 15
26.11.2013, 17:47 12
Пытался использовать с/без Auto Acknowtidgment, с flush и без него, по прерыванию и по постоянному обращению.
Пришел к результату - отправляю сразу два пакета подряд в первом 1, во втором 254. И отключаю питание. На приемнике принимаются все пакеты, а 254-е игнорируются програмно. В итоге все единичные получаются исправно.
Не идиально конечно, но если PID с отключением питания обнуляется, то наверно это самый логичный выход.

Спасибо за помощь! Наверно на этом можно закрывать тему.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2013, 17:47

Не игнорируются файлы в .gitignore
Всем привет! Записал в .gitignore файлы, которые должны игнорироваться, но они все равно...

Параметры запуска Chrome игнорируются
Хочу перенести кеш основного браузера на рамдиск. Создал рамдиск на 1 гб, без сохранения данных в...

Openwrt игнорируются правила iprouter
Добрый день. Есть обычная(дефолтная связка): Интернет-Роутер(Openwrt)-ПК. Задача заблокировать ip...

Игнорируются потоки ввода cin
Здравствуйте! У меня такая проблема: в консольном приложении на C++ игнорируются некоторые потоки...

Параметры в функцию передаются, но полностью игнорируются
Доброго времени суток, уважаемые форумчане! Мои первый и трудные шаги на пути освоения Oracle...

Игнорируются точки останова расставленные пользователем
Всем здравствуйте. В C++Builder6 в свойствах проекта на вкладке Linker установленный флажок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.