Автоматика и аппаратура связи Дистанционное и непосредственное управление исполнительными механизмами, сотовая, а также радиосвязь. |
04.03.2013, 17:59
|
#521
|
Гражданин KAZUS.RU
Регистрация: 25.11.2009
Сообщений: 609
Сказал спасибо: 37
Сказали Спасибо 140 раз(а) в 72 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Easyrider83, Ну это логично. А функцию предусмотреть, специальную, все же не помешало бы.
|
|
|
|
07.03.2013, 00:22
|
#522
|
Частый гость
Регистрация: 25.12.2010
Сообщений: 21
Сказал спасибо: 9
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Здравствуйте.
Пытаюсь разобраться с NRF24L01. Без библиотек и не на ардуине. Делаю так:
Код:
|
Установить 0 на CE
SPDR = 0xA0; - команда W_TX_PAYLOAD
_delay_ms(1);
Дальше 5 байт адреса
SPDR = 0xE7;
_delay_ms(1);
SPDR = 0xE7;
_delay_ms(1);
SPDR = 0xE7;
_delay_ms(1);
SPDR = 0xE7;
_delay_ms(1);
SPDR = 0xE7;
_delay_ms(1);
SPDR = data; - байт данных
_delay_ms(1);
Установить 1 на SS
_delay_ms(1);
Установить 1 на CE |
Настройка:
Код:
|
Init_Master_IntContr();
write_NRF24L01(0x20,0x0F);//CONFIG
write_NRF24L01(0x21,0x03);//EN_AA
write_NRF24L01(0x22,0x03);//EN_EX_ADDR
write_NRF24L01(0x23,0x03);//SETUP_AW
write_NRF24L01(0x24,0x03);//SETUP_RETR
write_NRF24L01(0x25,0x03);//RF_CH
write_NRF24L01(0x26,0x07);//RF_SETUP
write_NRF24L01(0x31,0x01);//RX_PW_PO |
В статусе получаю 0E.
Вроде отправил?
Что мне сделать чтобы получить байт приемником? Тему читал, но осилил только 10 страниц.
|
|
|
|
07.03.2013, 07:49
|
#523
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Надо инициализировать почти все регистры, где-то в середине темы была полная инициализация. Мне тоже лень искать ссылку. В приемник и передатчик записываются абсолютно одинаковые значения, только в регистре конфига один включаем приемником, другой передатчиком. В статусе будет 2Е если пакет принял приемник, или 1Е если не принял
|
|
|
|
07.03.2013, 17:05
|
#524
|
Частый гость
Регистрация: 25.12.2010
Сообщений: 21
Сказал спасибо: 9
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Нашел только это:
https://kazus.ru/forums/showpost.php...&postcount=383
и это
https://kazus.ru/forums/showpost.php...&postcount=278
В инициализацию добавил пару регистров:
Код:
|
write_NRF24L01(0x20,0x0E);//CONFIG
_delay_ms(1);
write_NRF24L01(0x21,0x00);//EN_AA
write_NRF24L01(0x22,0x01);//EN_RXADDR
write_NRF24L01(0x23,0x03);//SETUP_AW
write_NRF24L01(0x24,0x03);//SETUP_RETR
write_NRF24L01(0x25,0x03);//RF_CH
write_NRF24L01(0x26,0x07);//RF_SETUP
write_NRF24L01_pipe(0x2A);//RX_ADDR_P0 = E7E7E7E7E7
write_NRF24L01_pipe(0x30);//TX_ADDR_P0 = E7E7E7E7E7
write_NRF24L01(0x31,0x01);//RX_PW_PO
write_NRF24L01(0x3C,0x00);//DYNPD
write_NRF24L01(0x3D,0x00);//FEATURE |
В итоге могу записать в ФИФО передатчика 3 пакета(5 байт адрес+1 байт данных). После первых двух статус 0E, после последнего 0F(FIFO и пуст и полон?). То есть Фифо заполняется. Потом ставлю СЕ=1, жду 1мс, СЕ=0. Читаю статус и там все равно 0F.
|
|
|
|
07.03.2013, 18:55
|
#525
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Установи 1 на СЕ и сиди жди прерывания на ножке ИНТ
Если конечно генератор работает, нет косяков с кварцем
|
|
|
|
07.03.2013, 19:39
|
#526
|
Частый гость
Регистрация: 25.12.2010
Сообщений: 21
Сказал спасибо: 9
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Такс. Спасибо. Отправить вроде получилось. В статусе 2Е при отключенном AUTO_ACK, значит пакет отправил. Теперь приемник. Вот такие настройки для ловли помех. Без CRC, 3 байта адрес.
Код:
|
write_NRF24L01(0x20,0x02);//CONFIG было 0x0F
_delay_ms(1);
write_NRF24L01(0x21,0x00);//EN_AA
write_NRF24L01(0x22,0x01);//EN_RXADDR
write_NRF24L01(0x23,0x01);//SETUP_AW
write_NRF24L01(0x24,0x03);//SETUP_RETR
write_NRF24L01(0x25,0x03);//RF_CH
write_NRF24L01(0x26,0x07);//RF_SETUP
write_NRF24L01_pipe(0x2A);//RX_ADDR_P0 = E7E7E7E7E7
write_NRF24L01_pipe(0x30);//TX_ADDR_P0 = E7E7E7E7E7
write_NRF24L01(0x31,0x01);//RX_PW_PO
write_NRF24L01(0x3C,0x00);//DYNPD
write_NRF24L01(0x3D,0x00);//FEATURE
write_NRF24L01(0x27,0xF0); |
Мне чтобы приемник начал принимать что либо надо дернуть СЕ в 1. И пока CE=1 приемник будет ловить все подряд. Правильно? Не ловит. В статусе 0E.
Последний раз редактировалось CS_SkiF; 07.03.2013 в 19:51.
|
|
|
|
08.03.2013, 11:04
|
#527
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Включай crc обязательно, иначе утонешь в мусоре. Настройки всех регистров полностью одинаковые для приемника и передатчика, только в Конфиге стоит/сброшен бит прием/передача. Настраиваешь приемник и поднимаешь СЕ, после чего передаешь передатчиком. Не забывай очищать командой flush tx буфер если он переполнен
|
|
|
|
08.03.2013, 14:09
|
#528
|
Частый гость
Регистрация: 25.12.2010
Сообщений: 21
Сказал спасибо: 9
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Ну помехи ловит вроде. Но только редко как то. Где то раз в несколько секунд. Это нормально?
Последний раз редактировалось CS_SkiF; 08.03.2013 в 15:16.
|
|
|
|
08.03.2013, 17:24
|
#529
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
С CRC - никогда, я даже не сделал проверку принятого пакета в своем серийном изделии - работает...
Без CRC вроде и не включал ни разу
|
|
|
|
08.03.2013, 18:21
|
#530
|
Частый гость
Регистрация: 25.12.2010
Сообщений: 21
Сказал спасибо: 9
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Кстати еще такой вопрос.
Передатчиком(микроконтроллером) при payload=1байт и адресе=5 байт я оправляю 6-байтовый пакет, сначала 5 байт адреса и потом 1 байт данных. Правильно?
На другом конце я должен принять тоже 6 байт или адрес сам отбрасывается и к МК приходит только 1 бай данных?
|
|
|
Сказали "Спасибо" CS_SkiF
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 03:49.
|
|