Автоматика и аппаратура связи Дистанционное и непосредственное управление исполнительными механизмами, сотовая, а также радиосвязь. |
26.10.2011, 22:19
|
#241
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Начал ковыряться с модулями (готовые купил NRF24L01+). Толи я что-то не понимаю... Не хотят регистры прописываться. Читаются нормально дефолтовые значения.
Код:
|
00=›08 01=›3f 02=›03 03=›03 04=›03 05=›02 06=›0f 07=›0e 08=›00
09=›00 a=›e7 0b=›c2 0c=›c3 0d=›c4 0e=›c5 0f=›c6 10=›e7 11=›00
12=›00 13=›00 14=›00 15=›00 16=›00 17=›11 18=›00 19=›00 1a=›00
1b=›00 1c=›00 1d=›00 1e=›68 1f=›00
= e7 e7 e7 e7 e7 =
= c2 c2 c2 c2 c2 =
= c3 c3 c3 c3 c3 =
= c4 c4 c4 c4 c4 =
= c5 c5 c5 c5 c5 =
= c6 c6 c6 c6 c6 =
= e7 e7 e7 e7 e7 = |
А вот пытаюсь изменить - фиг. В протеусе все красиво (кстати, как эмулировать ответы по SPI?).
Код:
|
char SPI_RW(char data)
{
char bitcnt;
output_low(SPI_MOSI);
output_low(SPI_SCK);
Delay_us(1);
for(bitcnt=0; bitcnt‹8; bitcnt++)
{
if ((data & 0x80) == 0x80)
output_high(SPI_MOSI);
else
output_low(SPI_MOSI);
data = data ‹‹ 1;
Delay_us(5);
output_high(SPI_SCK);
if(input_state(SPI_MISO))
data |= 1;
Delay_us(5);
output_low(SPI_SCK);
Delay_us(5);
}
output_low(SPI_MOSI);
return data;
}
char SPI_WR_REG(char reg, char data)
{
char status;
output_low(CSN);
status = SPI_RW(reg);
SPI_RW(data);
output_high(CSN);
return status;
} |
Где косяк?
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
26.10.2011, 23:42
|
#242
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
DK, косяк в том, что при записи в регистр надо, чтобы был установлен пятый бит в адресе регистра. Внимательно мой код посмотрите.
Код:
|
void RF_Send_Cmd(u8 adrs, u8 cmd) //write data to register procedure
{
PIN_OFF(CE_GPIO, CE);
PIN_OFF(CSN_GPIO, CSN);
SPI_SendByte((0x1F&adrs)|(1‹‹5));
SPI_SendByte(cmd);
PIN_ON(CSN_GPIO, CSN);
} |
Страница 19 документации.
Последний раз редактировалось Easyrider83; 27.10.2011 в 00:02.
|
|
|
|
27.10.2011, 08:42
|
#243
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Сообщение от Easyrider83
|
Страница 19
|
У меня 46 Я уже озверел от диаграмм и своего незнания англицкого.
А всего-то надо кусок кода с пояснениями
Easyrider83, можно я тебя еще помучаю вопросами?
Кстати, в твоем кусочке конструкция (1‹‹5)... Не проще (x|0x20)? 5 раз влево сдвигать... Только если задержка нужна
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
Последний раз редактировалось DK; 27.10.2011 в 08:47.
|
|
|
|
27.10.2011, 09:43
|
#244
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Сообщение от DK
|
У меня 46
|
А что за даташит такой? Откуда такие объемы?
Сообщение от DK
|
А всего-то надо кусок кода с пояснениями
|
Я там красивый код с пояснениями выложил. Только под ARM. Но под любой проц переписать не проблема. Отмотайте страницу назад.
Сообщение от DK
|
Кстати, в твоем кусочке конструкция (1‹‹5)... Не проще (x|0x20)? 5 раз влево сдвигать... Только если задержка нужна
|
Это уже на совести компилятора. Я думаю, все там красиво в итоге получается.
Вообще с этими арм'ами об оптимизации кода стал меньше задумываться. Бейсик был в этом плане прозрачнее.
|
|
|
|
28.10.2011, 15:29
|
#245
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Сообщение от Easyrider83
|
А что за даташит такой?
|
Вот, пожалуйста
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
Эти 2 пользователя(ей) сказали Спасибо DK за это сообщение:
|
|
|
28.10.2011, 15:34
|
#246
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
DK, ну так чего, заработало у вас?
|
|
|
|
28.10.2011, 21:03
|
#247
|
Почётный гражданин KAZUS.RU
Регистрация: 10.05.2003
Адрес: Москва
Сообщений: 2,531
Сказал спасибо: 737
Сказали Спасибо 1,927 раз(а) в 799 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Мозг затуманен алкоголем, поэтому медленно вкуриваю доки Параллельно переделываю свою прогу под вторую отладочную платку (она на PIC18 поэтому в лоб не работает).
Походу уже рождается мысль сделать свою отладочку, поудобнее, с индикатором (или двухстрочник влепить, или дисплей от нокии), с выводами шин i2c SPI, маленькую флешку, DS1820... Парочку мелких круть-верть (то бишь потенциометров) влепить..
__________________
Опыт - это школа, в которой человек узнает, каким дураком он был раньше.
|
|
|
|
28.10.2011, 21:12
|
#248
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
DK, да я вот тоже сделал макеточку на STM32. Без внутрисхемной отладки никогда бы не догадался, что у меня сопля на плате между MISO и CS висела.
|
|
|
|
01.11.2011, 13:58
|
#249
|
Прописка
Регистрация: 26.06.2007
Сообщений: 136
Сказал спасибо: 61
Сказали Спасибо 20 раз(а) в 17 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
Что можете порекомендовать для снижения потребления связки Atmega48v+nRF24L01?
Atmega48V будет питаться от 3 пальчиковых батареек. Режим сна хочу сделать Power-Down и когда нужно будить и мерить температуры ( с помощью DS18B20) будить WatchDog'ом, затем отсылать по радио. Подскажите как можно максимально снизить энергопотребление. Сейчас думаю нужно сделать:
1. Отключить всю периферию (включаю внутренний источник опорного напряжения, компаратор и Brown-out Detector)
2. Все порты на вход и отключить подтяжку, т.е. будет в 3 состоянии, либо возможно лучше их на землю посадить, как правильнее?
3. Работать будет от внутреннего источника тактовых сигналов на 8 МГц
4. Все работа организована будет по прерыванию
5. Интересует ножка Reset, отключить ее нельзя, т.к. иначе не смогу потом прошивать МК через ISP, а ее рекомендуют подтянуть к питанию, чтобы не ловила помехи, если подцеплю черзе резистор, то он будет есть много тока как быть?
Хочется сделать максимально энергоэкономическое устройство, спортивный интерес тоже присутствует
|
|
|
|
01.11.2011, 16:01
|
#250
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Кто-нибудь работал с RF модулями nRF2401A?
2. Тогда будут болтаться в воздухе, ловить случайные уровни и проц будет жрать из-за сквозных токов на входах. Или выходы, или входы с внешней/внутренней подтяжкой
5. Резистор стоит внутри. Если не делать проводник от Ресета длиной десятки см - ничего не надо
К этому https://kazus.ru/forums/showpost.php...&postcount=166 нужно стремиться. Меньшее потребление невозможно (если не выключать питание трансивера внешним полевиком)
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 17:04.
|
|