HOPERF RFM70, особенности работы
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: HOPERF RFM70, особенности работы
Вообщем, мне что-то сложно вам подсказать на расстоянии в таком режиме как мы общаемся. Эту библиотечку я прикручивал к ATmega16, ATXmega256A3 и ATTiny44. Во всех случаях после поисков проблем (обычно не очень долгих) все работало. Почему у вас не запускается - это вопрос, там скорей всего какая-то мелочь, но мне сложно подсказать что-то дельное сейчас. Проверьте все еще раз внимательно, может отложите на пару дней, а потом свежим взглядом еще раз взглянуть...
Re: HOPERF RFM70, особенности работы
Я уже отдохнул на выходных, и вчера ещё раз стал выяснять почему не работает.
Первое что проверил, действительны ли мои предположения что первые 2 посылки как в модуле 1 так и 2 являются загрузкой конфигурации (параметров работы) модулей. Как оказалось так оно и есть, например в модуле 1 при вызове процедуры установки номера канала setChannel(28)
число cnum = 28 (в шестнадцатеричном виде 0х1C) отправляется
где
RFM70_CMD_WRITE_REG = 0x20// Define write command to register
RFM70_REG_RF_CH = 0x05 // 'RF channel' register address
операция или (|) даёт 0x25
при просмотре логическим анализатором видно, что такая последовательность 0x25 следующий байт 0х1С - передается, чтобы проверить не случайно ли я вижу такую последовательность, изменил номер канала на 27 (0х1В) и заново запустил лог. анализатор, он зафиксировал 0x25 0х1B - я не ошибся
до окончания пакета передачи идут несколько байтов (это как думаю) отправка команды setMode(0);//transmit
Для того чтобы проверить работает процедура отправки сообщения и точно видеть что передаю в процедуру, поставил число 24(0x18) - допустим у нас такая температура sendPayload(0x18,1, 0);
Так вот такая комбинация 0x18 отсутствует не только в том пакете который передаёт конфигурацию, но и в коротком о котором я писал ранее (Atmega 8a 2755 ms подтверждение.jpg) в своих сообщениях.
Получается явно что процедуры инициализации и установки канала работают а сама sendPayload - нет.
Продолжу общение с модулем сегодня вечером.
P.S. может дело в Atmega 8а адреса регистров где-то отличаются?
Первое что проверил, действительны ли мои предположения что первые 2 посылки как в модуле 1 так и 2 являются загрузкой конфигурации (параметров работы) модулей. Как оказалось так оно и есть, например в модуле 1 при вызове процедуры установки номера канала setChannel(28)
число cnum = 28 (в шестнадцатеричном виде 0х1C) отправляется
Код: Выделить всё
void setChannel(uint8_t cnum)
{
writeRegVal( RFM70_CMD_WRITE_REG | RFM70_REG_RF_CH, cnum);
}
где
RFM70_CMD_WRITE_REG = 0x20// Define write command to register
RFM70_REG_RF_CH = 0x05 // 'RF channel' register address
операция или (|) даёт 0x25
при просмотре логическим анализатором видно, что такая последовательность 0x25 следующий байт 0х1С - передается, чтобы проверить не случайно ли я вижу такую последовательность, изменил номер канала на 27 (0х1В) и заново запустил лог. анализатор, он зафиксировал 0x25 0х1B - я не ошибся
Для того чтобы проверить работает процедура отправки сообщения и точно видеть что передаю в процедуру, поставил число 24(0x18) - допустим у нас такая температура sendPayload(0x18,1, 0);
Так вот такая комбинация 0x18 отсутствует не только в том пакете который передаёт конфигурацию, но и в коротком о котором я писал ранее (Atmega 8a 2755 ms подтверждение.jpg) в своих сообщениях.
Получается явно что процедуры инициализации и установки канала работают а сама sendPayload - нет.
Продолжу общение с модулем сегодня вечером.
P.S. может дело в Atmega 8а адреса регистров где-то отличаются?
Re: HOPERF RFM70, особенности работы
Продолжил общение с модулем, вернее с функцией передачи данных sendPayload, вместо 0х18 число 24 - sendPayload(24,1, 0); всё таки правильно передавать десятичное число так как входящий параметр определен как int
запускаю логический анализатор и вижу что 24 не передаётся (см. рисунок "до переделки.png"), а передаётся 0x2E, ставил третий параметр 1 и -1 как советовал уважаемый "eess9", изменений никаких.
Попробовал изменять второй параметр это len (длина сообщения), поставил 2 оказалось после последнего байта 0x2E появился 0x00, значит установка длины пакета работает.
Остался первый параметр int8_t * payload, и тут я подумал, а что если убрать * в объявлении параметра по ссылке, убираю * в объявлении функции и в transmitSPI(*(payload++)); - запускаю логический анализатор - 24 передаётся!!!!
Может здесь дело в IDE, у меня проект на Atmel Studio 6.1?
Теперь осталось изменить код во втором модуле и пробовать передачу пакетов между 2 этими модулями чем сегодня вечером и займусь.
Код: Выделить всё
uint8_t sendPayload(int8_t * payload, uint8_t len, int8_t toAck) // choose 0=nAck, 1=AckRequest
{
// check TX_FIFO
uint8_t status;
status = readRegVal(RFM70_REG_FIFO_STATUS);
if (status & RFM70_FIFO_STATUS_TX_FULL)
{
debug(RFM70_DEBUG_FIFO_FULL);
return 0;
}
// send payload
PORT_SPI &=~ (1<<CSN);
_delay_ms(RFM70_CS_DELAY);
if(toAck == -1)
transmitSPI(RFM70_CMD_W_ACK_PAYLOAD);
else if (toAck == 0)
transmitSPI(RFM70_CMD_W_TX_PAYLOAD_NOACK);
else
transmitSPI(RFM70_CMD_WR_TX_PLOAD);
while(len--)
{
transmitSPI(*(payload++));
//uart_putc(*payload);
//uart_puts(", ");
}
PORT_SPI |= (1<<CSN);
_delay_ms(RFM70_CS_DELAY);
//uart_puts("\n");
//PORTA ^= (1<<PA4);
return 1;
}
запускаю логический анализатор и вижу что 24 не передаётся (см. рисунок "до переделки.png"), а передаётся 0x2E, ставил третий параметр 1 и -1 как советовал уважаемый "eess9", изменений никаких.
Попробовал изменять второй параметр это len (длина сообщения), поставил 2 оказалось после последнего байта 0x2E появился 0x00, значит установка длины пакета работает.
Остался первый параметр int8_t * payload, и тут я подумал, а что если убрать * в объявлении параметра по ссылке, убираю * в объявлении функции и в transmitSPI(*(payload++)); - запускаю логический анализатор - 24 передаётся!!!!
Может здесь дело в IDE, у меня проект на Atmel Studio 6.1?
Теперь осталось изменить код во втором модуле и пробовать передачу пакетов между 2 этими модулями чем сегодня вечером и займусь.
- Вложения
-
- 24 передаётся.jpg
- (224.63 КБ) 494 скачивания
-
- До переделки.png
- (136.49 КБ) 399 скачиваний
Re: HOPERF RFM70, особенности работы
Подключил вчера вечером логический анализатор к модулю 2 (приёмник) для того чтобы посмотреть хоть что-то принимается, но как оказалось чуда пока не произошло. Модуль 1 с передатчиком передаёт пакет (как я писал ранее с числом 24), а в пакете приёмника пока такого не наблюдается, как видно из приложенного рисунка Мк передаёт радиомодулю 2 байта 0x07 0x00 и получает 0x0E 0x0E. Стал смотреть функцию приёма пакета receivePayload вот её код
где RFM70_REG_STATUS = 0x07 // 'Status' register address
RFM70_IRQ_STATUS_RX_DR = 0x40 // Status bit RX_DR IRQ
если посмотреть функцию проверки статуса readRegVal(RFM70_REG_STATUS);
видно что она отправляет 0x07 0x00
и в приложенном здесь рисунке res - результат статуса 14 (0x0E), естественно далее
в функции receivePayload ничего не выполняется.
У меня вопрос, как должен работать приём?
P.S. Посмотрел ещё раз на скрин, и вижу что CE высокий уровень, может он должен быть низкий?
Код: Выделить всё
unsigned int receivePayload(unsigned int *payload)
{
unsigned int len;
// check RX_FIFO
unsigned int status;
status = readRegVal(RFM70_REG_STATUS);
if (status & RFM70_IRQ_STATUS_RX_DR) { // RX_DR
//PORTA ^= (1<<PA4);
//while(1) {
unsigned int fifo_sta;
len = readRegVal(RFM70_CMD_RX_PL_WID); // Payload width
readRegBuf(RFM70_CMD_RD_RX_PLOAD, payload, len);
fifo_sta = readRegVal(RFM70_REG_FIFO_STATUS);
//if (fifo_sta & RFM70_FIFO_STATUS_RX_EMPTY) break; // read until RX_FIFO empty
//}
if (fifo_sta & RFM70_FIFO_STATUS_RX_EMPTY) {
status|= 0x40 & 0xCF; // clear status bit rx_dr
writeRegVal(RFM70_CMD_WRITE_REG | RFM70_REG_STATUS, status);
}
//showstr("что-то приняли",0,120,0,0,255); //это строка для проверки
return len;
}
else
{
//showstr("Ничего не приняли",0,130,0,0,255); //это строка для проверки
return 0;
}
}
где RFM70_REG_STATUS = 0x07 // 'Status' register address
RFM70_IRQ_STATUS_RX_DR = 0x40 // Status bit RX_DR IRQ
если посмотреть функцию проверки статуса readRegVal(RFM70_REG_STATUS);
Код: Выделить всё
unsigned int readRegVal(unsigned int cmd)
{
unsigned int res;
PORT_SPI &=~ (1<<CSN);
_delay_ms(RFM70_CS_DELAY);
transmitSPI(cmd); //отправка 0х07 команды
res=transmitSPI(0); //отправка 0 и получение результата
PORT_SPI |= (1<<CSN);
_delay_ms(RFM70_CS_DELAY);
return res;
}
видно что она отправляет 0x07 0x00
и в приложенном здесь рисунке res - результат статуса 14 (0x0E), естественно далее
в функции receivePayload ничего не выполняется.
У меня вопрос, как должен работать приём?
P.S. Посмотрел ещё раз на скрин, и вижу что CE высокий уровень, может он должен быть низкий?
- Вложения
-
- приём.png
- (185.52 КБ) 346 скачиваний
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: HOPERF RFM70, особенности работы
Читаем datasheet:
Значит передатчик таки ничего не передает. По опыту: я всегда при передаче ставлю toAСK = 0 (3-й параметр), при других параметрах бывает веселье с RFM70(3). Похоже, что приемопередатчики боятся статики: когда я запускал их с ATXmega256A3 умудрился парочку угрохать: общение с контроллером идет, а по воздуху тишина. Хорошо помогла замена для проверки в чем причина, а то пару дней мозги сушил в чем дело.
К слову силапсовские SI100x имеют туже проблему: приемопередатчик вылетает от статики на раз (это для тех, кто будет использовать RFM50).
В последнем проекте устройство было очень критично к потреблению. 22мА в режиме приемника немало. Опуская СЕ в 0, а потом опять поднимая в 1 удалось сократить потребление до 10мА практически без потери пакетов, но передатчик должен передавать с частотой, которая бы попадала в эти интервалы.
Больше не знаю чем помочь
Все правильно CE в 1.The RX mode is an active mode where the RFM73 radio is configured to be a receiver. To enter this mode from standby-I mode, the PRX device must have the PWR_UP bit set high, PRIM_RX bit set high and the CE pin set high.
Значит передатчик таки ничего не передает. По опыту: я всегда при передаче ставлю toAСK = 0 (3-й параметр), при других параметрах бывает веселье с RFM70(3). Похоже, что приемопередатчики боятся статики: когда я запускал их с ATXmega256A3 умудрился парочку угрохать: общение с контроллером идет, а по воздуху тишина. Хорошо помогла замена для проверки в чем причина, а то пару дней мозги сушил в чем дело.
К слову силапсовские SI100x имеют туже проблему: приемопередатчик вылетает от статики на раз (это для тех, кто будет использовать RFM50).
В последнем проекте устройство было очень критично к потреблению. 22мА в режиме приемника немало. Опуская СЕ в 0, а потом опять поднимая в 1 удалось сократить потребление до 10мА практически без потери пакетов, но передатчик должен передавать с частотой, которая бы попадала в эти интервалы.
Больше не знаю чем помочь
Re: HOPERF RFM70, особенности работы
Как правильно понял по CE = 1 режим приёмника, CE = 0 передатчика. Посмотрел в модуле 1 (передатчика) при передаче коротких пакетов (рисунок 24 передаётся.jpg) CE там тоже равен 1, при передаче пакета наверное надо удерживать низкий уровень.
А модули я менял, у меня 3 модуля RFM73 и два RFM70 паял я их паяльником периодически отключая его от сети чтобы исключить повреждения (может конечно какой и повредил, но я их местами менял в разных вариантах). Попробую ещё один подпаять и посмотрю, хотя чую что дело в чём то другом, читая статью на EasyElectronics.ru ссылку - которую приводил ранее, не вижу в приведённых вами примерах где задаётся адрес (может адрес надо задать в передающем и приёмном модуле)?
А модули я менял, у меня 3 модуля RFM73 и два RFM70 паял я их паяльником периодически отключая его от сети чтобы исключить повреждения (может конечно какой и повредил, но я их местами менял в разных вариантах). Попробую ещё один подпаять и посмотрю, хотя чую что дело в чём то другом, читая статью на EasyElectronics.ru ссылку - которую приводил ранее, не вижу в приведённых вами примерах где задаётся адрес (может адрес надо задать в передающем и приёмном модуле)?
- Вложения
-
- Всё вместе.jpg
- (191.12 КБ) 448 скачиваний
Последний раз редактировалось BigallS Сб апр 26, 2014 18:14:30, всего редактировалось 1 раз.
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: HOPERF RFM70, особенности работы
CE = 0 - это режим Standby-I. В этом режиме минимизируется потребление, и поэтому RF часть модуля отключена. То есть НИЧЕГО ПЕРЕДАВАТЬ И ПРИНИМАТЬ ОН НЕ БУДЕТ!!!
Библиотеку я брал вот от сюда http://projects.weber-itam.de/rfm70-funkmodul/. Статья на немецком, но это не беда при современных средствах перевода. Можете у него еще спросить. Я с ним переписывался в комментариях к статье на английском (немецкого не знаю вообще) в январе 13-го года. Ничего, отвечал тоже на английском.
Библиотеку я брал вот от сюда http://projects.weber-itam.de/rfm70-funkmodul/. Статья на немецком, но это не беда при современных средствах перевода. Можете у него еще спросить. Я с ним переписывался в комментариях к статье на английском (немецкого не знаю вообще) в январе 13-го года. Ничего, отвечал тоже на английском.
Re: HOPERF RFM70, особенности работы
Спасибо за подсказку, буду ещё копать. Если не получится, попробую на NRF24L01+ сделать, есть ещё другие радио модули RFM23B-S, RFM12B, не подскажите с ними как работать, не в этой теме конечно, а в личку.
P.S. Был у немца по вашей ссылке, скачал его пример он там под Atmega 8а, буду смотреть.
P.S. Был у немца по вашей ссылке, скачал его пример он там под Atmega 8а, буду смотреть.
Re: HOPERF RFM70, особенности работы
И всё таки передача заработала, посмотрел я код немца, он в принципе почти ничем не отличается от приведённого, и решил проверять все модули поочерёдно чтобы как писал "eess9" найти рабочие. В первую очередь к модулю RFM73 (который я ещё не пробовал) очень осторожно подпаял шлейф и подключил его на модуль 1 (передатчик) по очереди стал ставить в модуль 2 (приёмник) радио модули сначала RFM73 (2 шт.), потом RFM70 (2 шт.), результата никакого. Поставил в передатчик первый попавшийся RFM70 и стал проверять RFM73 (3 штуки) и последний RFM70 и о... с последним заработало!!!
Т.е. пара RFM70 работает, не знаю может быть параметры для RFM73 отличаются и они не работают с RFM70, а возможно и какие то из них и вправду от статики померли, важно что хоть пара работает за что большая благодарность "eess9". Естественно я по отдельности попробую всё таки запустить оставшиеся эти три штуки RFM73.
В приложенном "скрине" видно что приходит "24" (это 4-й байт в пакете) которое я передаю.
P.S. Попробовал логическим анализатором подольше лог записать, да периодически идут короткие посылки 15 шт. как я писал в предыдущем посте, а потом пакет как на этом рисунке, заново 15 коротких и после пакет с данными.
Т.е. пара RFM70 работает, не знаю может быть параметры для RFM73 отличаются и они не работают с RFM70, а возможно и какие то из них и вправду от статики померли, важно что хоть пара работает за что большая благодарность "eess9". Естественно я по отдельности попробую всё таки запустить оставшиеся эти три штуки RFM73.
В приложенном "скрине" видно что приходит "24" (это 4-й байт в пакете) которое я передаю.
P.S. Попробовал логическим анализатором подольше лог записать, да периодически идут короткие посылки 15 шт. как я писал в предыдущем посте, а потом пакет как на этом рисунке, заново 15 коротких и после пакет с данными.
- Вложения
-
- Приём пакета Работает.png
- (212.55 КБ) 470 скачиваний
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: HOPERF RFM70, особенности работы
Ну что вам сказать? ПОЗДРАВЛЯЮ!!!
По поводу не работы RFM73: прикрепляю свой последний проект ATTiny24(44) + RFM73. Это диммер с пультом. Может действительно есть какая-то разница с вашим кодом. Чтобы переделать под другой контроллер надо просто правильно настроить SPI, т.е. поменять функции в rfm70.c Также в rfm70.h дефайнами задать правильно нужные ноги и будет работать. По крайней мере у меня работает.
Удачи!
По поводу не работы RFM73: прикрепляю свой последний проект ATTiny24(44) + RFM73. Это диммер с пультом. Может действительно есть какая-то разница с вашим кодом. Чтобы переделать под другой контроллер надо просто правильно настроить SPI, т.е. поменять функции
Код: Выделить всё
void initSPI(uint8_t clk_div)Код: Выделить всё
uint8_t transmitSPI(uint8_t val) Удачи!
- Вложения
-
- RFM73.rar
- (116.66 КБ) 239 скачиваний
Re: HOPERF RFM70, особенности работы
Ещё раз благодарю, посмотрю ваш код обязательно притом что за RFM73 деньги "уплочены" и без дела их оставлять резона нет. По другим радио модулям, о которых я спрашивал в предыдущих сообщениях, есть ли у вас опыт работы (как запускали) и примеры работы если это не секрет можете дать, естественно в личной переписке.
P.S. Да забыл спросить в ваших примерах в main при инициализации радиомодуля
два раза идёт вызов функции SetMode (как в коде приёмника так и передатчика), это просто ошибка?
У немца такого нет.
P.S. Да забыл спросить в ваших примерах в main при инициализации радиомодуля
Код: Выделить всё
setMode(1);
setChannel(28);
setMode(1); // resive
два раза идёт вызов функции SetMode (как в коде приёмника так и передатчика), это просто ошибка?
У немца такого нет.
Последний раз редактировалось BigallS Пн апр 28, 2014 13:49:38, всего редактировалось 1 раз.
- eess9
- Вымогатель припоя
- Сообщения: 672
- Зарегистрирован: Ср фев 29, 2012 01:58:32
- Откуда: Харьков, Украина
Re: HOPERF RFM70, особенности работы
Да, спасибо, это я затупил. Функция конечно только одна, вторая лишняя. И у себя тоже подправлю
. По поводу других модулей ничего сказать не могу, не работал.
-
asylumist
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Сб май 03, 2014 23:34:28
- Откуда: Украина, Херсон
Re: HOPERF RFM70, особенности работы
работаю с rfm73. проект взял, как и eess9, у немца с сайта http://projects.weber-itam.de/rfm70-funkmodul/
переделка с rfm70 на rfm73 заключалась в изменении седьмого регистра из нулевого банка на 0x0F (как вариант) вместо 0x3F. иначе модули не связывались.
моя проблема заключается в том, что приемник ВСЕГДА принимает (судя по выводу в uart) 14 байт (символов). вне зависимости от того, сколько я их передаю. кроме того, прием смещается на один байт и первым всегда идет символ '@'. подключив (для проверки) uart к выходу передатчика, вижу, что данные передаются правильно. кстати, для этого надо исправить ошибку в файле rfm70.c. в функции sendPayload цикл должен быть таким:
while (len--)
{
uart_putc(*payload);
uart_puts(", ");
transmitSPI(*(payload++));
}
прошу помощи. может, кто-то уже решил такую проблему, потому как я бьюсь уже второй день.
переделка с rfm70 на rfm73 заключалась в изменении седьмого регистра из нулевого банка на 0x0F (как вариант) вместо 0x3F. иначе модули не связывались.
моя проблема заключается в том, что приемник ВСЕГДА принимает (судя по выводу в uart) 14 байт (символов). вне зависимости от того, сколько я их передаю. кроме того, прием смещается на один байт и первым всегда идет символ '@'. подключив (для проверки) uart к выходу передатчика, вижу, что данные передаются правильно. кстати, для этого надо исправить ошибку в файле rfm70.c. в функции sendPayload цикл должен быть таким:
while (len--)
{
uart_putc(*payload);
uart_puts(", ");
transmitSPI(*(payload++));
}
прошу помощи. может, кто-то уже решил такую проблему, потому как я бьюсь уже второй день.
Re: HOPERF RFM70, особенности работы
asylumist писал(а):работаю с rfm73. проект взял, как и eess9, у немца с сайта http://projects.weber-itam.de/rfm70-funkmodul/
переделка с rfm70 на rfm73 заключалась в изменении седьмого регистра из нулевого банка на 0x0F (как вариант) вместо 0x3F. иначе модули не связывались...
Попробую с rfm73 заменить значение, у меня как раз они не работают.
По вопросу работы
Код: Выделить всё
while (len--)
{
uart_putc(*payload);
uart_puts(", ");
transmitSPI(*(payload++));
}попробуйте уберите * у меня не работало, о чём я писал выше
я сделал так
Код: Выделить всё
uint8_t sendPayload(int16_t payload, uint8_t len, int8_t toAck) // choose 0=nAck, 1=AckRequest
...
while (len--)
{
//uart_putc(payload); //uart я не использую
//uart_puts(", ");
transmitSPI(payload++);
}
...
на счёт 0x40 (@) так и должно быть посмотри моё сообщение выше "Приём пакета работает.png"
-
asylumist
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Сб май 03, 2014 23:34:28
- Откуда: Украина, Херсон
Re: HOPERF RFM70, особенности работы
разобрался с собакой. пришлось убрать весь uart. и все, судя по выходам на портах, работает хорошо. тестировал дальность. у меня два rfm73 связываются между собой на 50 метрах!
Re: HOPERF RFM70, особенности работы
asylumist писал(а):...тестировал дальность. у меня два rfm73 связываются между собой на 50 метрах!
Удивительно для rfm73 хотелось бы увидеть код чтобы понять почему у вас они так хорошо работают.
-
asylumist
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Сб май 03, 2014 23:34:28
- Откуда: Украина, Херсон
Re: HOPERF RFM70, особенности работы
в коде, кроме { (0x20|0x06), 0x0F } в инициализации шестого регистра нулевого банка, никаких изменений. ну и еще поубирал uart за ненадобностью. а так все, как у немца. модули покупал в http://www.rcscomponents.kiev.ua/produc ... v.1.0.html
еще есть в http://www.krokodil.kiev.ua/index.php?p ... t&Itemid=1
еще попробую согласно pdf-файла замены 70 на 73 изменить зачения инициализации четвертого и тринадцатого регистров. может, еще увеличит дальность.
еще есть в http://www.krokodil.kiev.ua/index.php?p ... t&Itemid=1
еще попробую согласно pdf-файла замены 70 на 73 изменить зачения инициализации четвертого и тринадцатого регистров. может, еще увеличит дальность.
Re: HOPERF RFM70, особенности работы
Видимо к нам в Россию какието другие завозят
шучу конечно. Проверю позже, буду дома не раньше чем через неделю. Кстати там в функции передачи неправильно передается значение более 256. Даже если входной параметр определить как uint16_t, вставил проверку на 256 если больше сдвигаем влево на 8 и передаем старший байт, если меньше передаем без сдвига. Функцию вызываем sendPayload( payload, sizeof(payload), 0) где второй параметр будет равен 2 ( передаем два байта).
Последний раз редактировалось BigallS Пт май 09, 2014 07:16:53, всего редактировалось 1 раз.
-
asylumist
- Первый раз сказал Мяу!
- Сообщения: 34
- Зарегистрирован: Сб май 03, 2014 23:34:28
- Откуда: Украина, Херсон
Re: HOPERF RFM70, особенности работы
удалось выжать еще несколько метров изменением в приемнике в первом банке пятого регистра на { (0x20|0x05), 0x3C, 0x02, 0x7F, 0xA6 }. а то, что можно передавать несколько (до 32) байт настраивается, как я себе представляю, настройкой регистров. скорее всего, в функции "configRxPipe". тогда отпадет надобность вручную разбивать данные по байтам. но я пока не могу понять логику этой функции.
Re: HOPERF RFM70, особенности работы
Нет, буфер модуля уже определен размером 32 байта, но этаж ф-ция как раз и пихает туда байты, но делает это не правильно, в случае если чисто больше 256, попробуй как у тебя есть передай чисто 400. Я сделал и сильно удивился когда увидел что приходит 144 и 145 в десятичном виде.