Автоматика и аппаратура связи Дистанционное и непосредственное управление исполнительными механизмами, сотовая, а также радиосвязь. |
01.11.2011, 16:22
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.09.2009
Сообщений: 1,139
Сказал спасибо: 138
Сказали Спасибо 366 раз(а) в 230 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
2) Ничего делать не надо.
3) Повесить часовой кварц, и когда ничего не делаем проц работает от него, ток упадёт значительно.
4) Переключаемся на внутренний генератор 8мгц
|
|
|
|
01.11.2011, 16:25
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Товарищи, будьте аккуратны. Модули с ебая идут с какой-то бета-альфа первой ревизией чипов. На них не работает контрольная сумма. Два дня проипался, пока вычислил проблему!
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
01.11.2011, 16:33
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Сообщение от sdsrem
|
3) Повесить часовой кварц, и когда ничего не делаем проц работает от него, ток упадёт значительно
|
Когда ничего не делаем - проц спит в повер-довне. Зачем ему тактирование, когда он ничего не должен делать?
|
|
|
|
02.11.2011, 08:30
|
|
Прописка
Регистрация: 26.06.2007
Сообщений: 136
Сказал спасибо: 61
Сказали Спасибо 20 раз(а) в 17 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Да, и разве возможно переключатся без программирования фьюзов с внешнего кварца на внутренний генератор?
|
|
|
|
02.11.2011, 14:50
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,530
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
а вот такой вопросик: а выдержит ли модуль 5В питание? По входам/выходам, должен, а вот само питание?
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
02.11.2011, 15:00
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Сообщение от DK
|
а вот такой вопросик: а выдержит ли модуль 5В питание? По входам/выходам, должен, а вот само питание?
|
Нормально работает и при 5.0 вольтах. Проверено.
|
|
|
|
02.11.2011, 16:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Сообщение от LionRJ
|
Да, и разве возможно переключатся без программирования фьюзов с внешнего кварца на внутренний генератор?
|
В мегах можно (только 32к кварц на входе асинхронного таймера - внутренний 8 МГц), в тинях нельзя
|
|
|
|
04.11.2011, 09:05
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,530
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Опять у меня что-то не то...
Как я понимю, после запуска передачи (т.е. СЕ = 1), если трансивер не смог передать данные 10 раз, то должен выставить прерывание MAX_RT? Не выдает. Но если прочитать статус - 1е. Все три прерывания в CONFIG включены по умолчанию, т.е. 0.
Код:
|
void RF_init()
{
SPI_WR_REG(WRITE_REG + CONFIG, 0x0c | RF_Power_On); // PWR_UP bit, enable CRC(2 bytes)
delay_ms(5);
SPI_WR_BUF(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH); // Writes TX_Address to nRF24L01
SPI_WR_BUF(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH); // RX_Addr0 same as TX_Adr for Auto.Ack
SPI_WR_REG(WRITE_REG + EN_AA, 0x01); // Enable Auto.Ack:Pipe0
SPI_WR_REG(WRITE_REG + SETUP_AW, 0x03); // RX/TX Address field width 5 bytes
SPI_WR_REG(WRITE_REG + EN_RXADDR, 0x01); // Enable Pipe0
SPI_WR_REG(WRITE_REG + SETUP_RETR, 0x1a); // 500us + 86us, 10 retrans...
SPI_WR_REG(WRITE_REG + RF_CH, 40); // Select RF channel 40
SPI_WR_REG(WRITE_REG + RF_SETUP, 0x07); // TX_PWR:0dBm, Datarate:1Mbps, LNA:HCURR
} |
Код:
|
void TX_mode()
{
output_low(CE);
SPI_WR_REG(WRITE_REG + CONFIG, 0x0c | RF_mode_TX | RF_Power_On);
} |
IRQ поднимается, если в STATUS записать 1 в MAX_RT
Если у меня две железки должны обмениваться, все адреса, то есть RX_ADDR_P0 и TX_ADDR на обеих сторонах нужно поставить одинаковые (ну я так понимаю картинку 5 стр. 13 мануала)?
На приемной стороне вообще IRQ постоянно в 1 стоит. Буду разбираться. Может, ляпа какая...
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
04.11.2011, 10:45
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
DK, я сейчас тоже голову ломаю над auto acknowledge и auto retransmit. Чипы у меня глючноватые. Поэтому результаты неоднозначные.
Хотя код рабочий. В этом я уверен. Вчера времени мало было, сегодня тоже. На следующей неделе буду побеждать эти чипы окончательно.
Ловите код для примера.
Например такая штука - PIPE0 включена и принимает данные. Я включаю PIPE1 Auto Acknowledge. Все, данные больше не принимаются, IRQ вечно поднято. Как прикажете такое понимать?
Последний раз редактировалось Easyrider83; 04.11.2011 в 10:52.
|
|
|
Сказали "Спасибо" Easyrider83
|
|
|
04.11.2011, 12:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,530
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Сообщение от Easyrider83
|
Как прикажете такое понимать?
|
Я вообще ХЗ. Вы хоть запускали их. А я вообще первый раз влез.
За код спасибо. Только когда я вижу структуру такую, мне сразу нехорошо в мозгах делается ![Улыбка](images/smilies/icon_smile.gif) Слишком много буковок.
Да еще кятайцы, блин... Не сразу допер, что они диоды на отладке к + подвесили ![Улыбка](images/smilies/icon_smile.gif) Схему не смотрел... Оказалось, они при 0 светятся ![Улыбка](images/smilies/icon_smile.gif) Уууу... черти нерусские...
Вот код передатчика. Посмотрите, все правильно?
Код:
|
RF_init();
TX_mode();
while(true)
{
output_high(PIN_D7);
output_low(CE);
SPI_WR_BUF(WR_TX_PLOAD, bbb, TX_PLOAD_WIDTH);
output_high(CE);
output_high(CSN);
delay_ms(10);
i = 10;
while(!input(IRQ) && --i)
delay_ms(10);
output_low(CE);
j = SPI_RD_REG(_STATUS);
fprintf(COM,"Status %x\r\n",j);
if(j & TX_DS)
{
SPI_WR_REG(WRITE_REG + _STATUS,TX_DS);
fprintf(COM,"Data send OK\r\n");
}
if(j & MAX_RT)
{
SPI_WR_REG(FLUSH_TX,0);
SPI_WR_REG(WRITE_REG + _STATUS,MAX_RT);
fprintf(COM,"Data not send. Status %x\r\n",j);
}
delay_ms(100);
} |
IRQ выдается только после записи SPI_WR_REG(WRITE_REG + _STATUS,MAX_RT);
Приемник
Код:
|
RF_init();
RX_mode();
SPI_RW(FLUSH_RX);
while(true)
{
output_high(CE);
while(!input(IRQ))
{
delay_ms(10);
}
output_low(CE);
st = SPI_RD_REG(_STATUS);
fprintf(COM,"Status - %x\r\n",st);
SPI_RD_BUF(RD_RX_PLOAD, Buffer, 16);
SPI_RW(FLUSH_RX);
SPI_WR_REG(WRITE_REG + _STATUS,RX_DR);
for(i=0;i‹16;i++)
fprintf(COM,"%x ",Buffer[i]);
fprintf(COM,"\r\n\r\n");
delay_ms(100);
} |
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:30.
|
|