RF модули от HOPERF RFM01 & RFM02

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Аватара пользователя
Savelek
Прорезались зубы
Сообщения: 221
Зарегистрирован: Сб апр 25, 2009 14:29:05

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Savelek »

Здравствуйте!
Спасибо за информацию, размещенную в этой теме! В интернете немного информации по этим приемникам и передатчикам.
Мне удалось настроить передачу информации от RFM02 к RFM01. Но есть одна небольшая проблема. Если попробовать начать передачу сразу после включения питания, то передача зависает в тот момент, где нужно ждать перехода от лог.1 к лог.0 на ножке nIRQ. Если потом перезапустить микроконтроллер, то будет тоже самое. А вот если сначала начать передачу(которая тут же зависнет), а потом перезапустить МК, а потом заново начать передачу, то все будет в порядке, RFM02 будет генерировать импульсы на nIRQ, а другой МК успешно примет информацию с RFM01. Передачу я запускаю "вручную", т.е. не с помощью соответствующей команды 0xC6, а как в примере от Hope RF(RF02_code).

Никто не сталкивался с такой проблемой?

Добавлено: ну вообще какая-то ерунда. Только что передача успешно проходила сразу после включения питания, а через нескольких включений-выключений снова приходилось перезапускать микроконтроллер.
Вложения
Transmitter.c
Код передатчика на Си (WinAVR)
(4.07 КБ) 368 скачиваний
Аватара пользователя
shurikss123
Грызет канифоль
Сообщения: 271
Зарегистрирован: Пн окт 25, 2010 20:47:04
Откуда: Казахстан, Астана

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение shurikss123 »

вот и я добрался до модулей(rfm01, rfm02) теперь у меня проблема, а она такова, все вроде сделал, по примерам, с оф.сайта, запустил, все вроде нормуль, тока не работает, а на приемнике valid data indicator постоянно моргает в чем проблема не соображу никак
Изображение
Мастер на все руки, кручу, кручу, кручу и матерюсь
Повелитель паяльной станции, лома, и пинцета!!!
Аватара пользователя
zvukovik
Встал на лапы
Сообщения: 140
Зарегистрирован: Вт авг 03, 2010 15:21:20
Откуда: Екатеринбург

Re: RF12 RFM12 RFM12B HopeRF - кто-то реально разобрался?

Сообщение zvukovik »

купил эти модули, взял код отсюда http://robot-develop.org/archives/2621 , ничего пока не заработало, почему осцил на кварцах показывает синус, частотой около 30кГц?
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Apparatchik »

Мучаю два RFM12B методом постоянного мониторинга регистра статуса все работает отлично. Но я хочу сделать по прерываниям вывод FFIT подключил на внешнее прерывание, настроеное по заднему фронту, в обработчике которого выставляю флаг и в основном цикле жду. Так вот в режиме постоянного мониторинга регистра статуса прерывание срабатывает (мигнет светодиод), а вот если ждать флага то прерывание не наступает вообще, я уже и так и этак подскажите куда копать?

P.S. и еще подскажите как его усыплять для понижения потребления энергии?

P.P.S. Разобрался сам, всем спасибо.
«И всё-таки она вертится!»
Аватара пользователя
don_slavone
Открыл глаза
Сообщения: 65
Зарегистрирован: Ср май 30, 2012 11:02:42
Откуда: Харьков
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение don_slavone »

Добрый день! Я пытаюсь разобраться с этими модулями но никак не получается. пробовал код выложенный позже для брелка, но на контроллере mega48, не хочет работать. Есть ли реально рабочий вариант кода для 434 Мгц, хочу разобраться.:)
электроКот :)
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Apparatchik »

don_slavone писал(а):Добрый день! Я пытаюсь разобраться с этими модулями но никак не получается. пробовал код выложенный позже для брелка, но на контроллере mega48, не хочет работать. Есть ли реально рабочий вариант кода для 434 Мгц, хочу разобраться.:)

Во вложении код, который мне помог. А контроллер любой может быть, у меня работает на mega8 и mega88.
Вложения
rfm12b_and_avr__quick_start.pdf
(100.59 КБ) 996 скачиваний
«И всё-таки она вертится!»
Аватара пользователя
don_slavone
Открыл глаза
Сообщения: 65
Зарегистрирован: Ср май 30, 2012 11:02:42
Откуда: Харьков
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение don_slavone »

Спасибо большое! а для RFM01 и RFM02 есть похожее? :)
электроКот :)
SergeiSam
Первый раз сказал Мяу!
Сообщения: 24
Зарегистрирован: Вс фев 18, 2007 14:09:34
Откуда: Воронеж
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение SergeiSam »

Всем доброго времени суток!
Помогите теперь мне, ткните пальцем, носом, только не бейте )))
У меня 2 Атмеги8 и 2 RFM12B-433 хочу сделать между ними передачу.
Хотя бы одностороннюю. Бился бился...
Можете показать 100% рабочий код на прием и передачу с каждой стороны?

Код: Выделить всё

Код для работы с RFM12. Проверено с мегой32, тини24, тини2313.
Приём:
Код:
#define DDR_SS DDRD
#define DDR_SCK DDRC
#define DDR_MOSI DDRD
#define PORT_SS PORTD
#define PORT_SCK PORTC
#define PORT_MOSI PORTD
#define PIN_MISO PINC
#define PIN_IRQ PIND
#define SS 6
#define SCK 0
#define MOSI 7
#define MISO 1
#define IRQ 2

#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

unsigned int RFXX_WRT_CMD(unsigned int aCmd) //Отправить команду
{
unsigned char i;
unsigned int temp=0;
PORT_SCK&=~(1<<SCK);
PORT_SS&=~(1<<SS);
for(i=0;i<16;i++)
   {
   if(aCmd&0x8000) PORT_MOSI|=(1<<MOSI);
   else PORT_MOSI&=~(1<<MOSI);
   PORT_SCK|=(1<<SCK);
   temp<<=1;
   if(PIN_MISO&(1<<MISO)) temp|=0x0001;
   PORT_SCK&=~(1<<SCK);
   aCmd<<=1;
   }
PORT_SS|=(1<<SS);
return(temp);
}

void RF12_INIT(void) //Инициализация
{
DDR_SS|=(1<<SS);
DDR_SCK|=(1<<SCK);
DDR_MOSI|=(1<<MOSI);
PORT_SS|=(1<<SS);
RFXX_WRT_CMD(0x80D8);//EL,EF,433band,12.5pF
RFXX_WRT_CMD(0x82D9);//!er,!ebb,ET,ES,EX,!eb,!ew,DC
RFXX_WRT_CMD(0xA640);//A140=430.8MHz
RFXX_WRT_CMD(0xC647);//4.8kbps
RFXX_WRT_CMD(0x94A0);//VDI,FAST,134kHz,0dBm,-103dBm
RFXX_WRT_CMD(0xC2AC);//AL,!ml,DIG,DQD4
RFXX_WRT_CMD(0xCA81);//FIFO8,SYNC,!ff,DR
RFXX_WRT_CMD(0xC483);//@PWR,NO RSTRIC,!st,!fi,OE,EN
RFXX_WRT_CMD(0x9850);//!mp,9810=30kHz,MAX OUT
RFXX_WRT_CMD(0xE000);//NOT USE
RFXX_WRT_CMD(0xC800);//NOT USE
RFXX_WRT_CMD(0xC040);//1.66MHz,2.2V
}

int main ()
{
//Внешнее прерывание от INT0, к которому цепляем nIRQ
MCUCR|=(1<<ISC01);
GICR|=(1<<INT0);
sei();

//Инициализация FRM12
RF12_INIT();

//Включаем fifo буфер и читаем статус регистр
RFXX_WRT_CMD(0xCA83);
RFXX_WRT_CMD(0x0000);
}

ISR(INT0_vect)   //обработчик внешнего прерывания
{
//тут хаваем данные с RFM12
data=((RFXX_WRT_CMD(0xB000))&0x00FF);
}


Передача:
Код:
void RF12_SEND(unsigned char aByte)
{
while(!(RFXX_WRT_CMD(0x0000)&0x8000));
RFXX_WRT_CMD(0xB800+aByte);
}

int main ()
{
//Инициализация FRM12
RF12_INIT();
RFXX_WRT_CMD(0xCA81);
RFXX_WRT_CMD(0x0000);//read status register
RFXX_WRT_CMD(0x8239);//!er,!ebb,ET,ES,EX,!eb,!ew,DC
RF12_SEND(0xAA);//PREAMBLE
RF12_SEND(0xAA);//PREAMBLE
RF12_SEND(0xAA);//PREAMBLE
RF12_SEND(0x2D);//SYNC HI BYTE
RF12_SEND(0xD4);//SYNC LOW BYTE

RF12_SEND(data); //тут передаём что хотим

RF12_SEND(0xAA);//DUMMY BYTE
RF12_SEND(0xAA);//DUMMY BYTE
RF12_SEND(0xAA);//DUMMY BYTE
}



В данном случаи подключения контролера к трансиверу следующее?
контрол Трансивер
SS (PD6) -> SS
SCK (PC0) -> SCK
MOSI (PD7) -> SDI ???
MISO (PC1) -> SDO???
PD2 -> iRQ

Я так понял, что вот этот код рабочий?
Ruslan.B
Прорезались зубы
Сообщения: 204
Зарегистрирован: Вт июл 21, 2009 20:57:09

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Ruslan.B »

Я тоже купил пару модулей rfm12bs, решил питать и модуль и МК от 3,3 в тогда вопрос- а если я хочу перепрошить МК мне сделать перемычку на линии питания модуля и этого хватит?
По схеме подключения: В документе rfm12b_and_avr__quick_start.pdf для attiny2313 схема верна?
Существует вообще библиотека на этот модуль я тут нашёл немного примеров...http://robot-develop.org/archives/2621
Я конечно сейчас до позднего вечера разберусь только не хотелось бы убить модуль.
А к ant значит можно ~170мм провод припаять?
Мишаня86
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт окт 20, 2011 13:28:56
Откуда: Санкт-Петербург
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Мишаня86 »

Добрый день!
Вот уже неделю пытаюсь соединить между собой RFM12B-433S1. Код передалал из Меги8 на PIC16F873 и PIC16F887, то что под рукой есть. Запускаю передатчик, в COM- порт в цикле выдает "sende..." светодиод мерцает, ток потребления всей штуковины прыгает до 60мА при 5В. Все линии SPI шевелятся.
Запускаю приемник, SPI виснет. Один раз моргает светодиод, в СОМ-порту тишина.
Оба проекта прилагаю в архивчиках. Помогите разобраться, ткните пальцем, все ж я больше железячник нежели программер...
Вложения
progect2.rar
(106.62 КБ) 216 скачиваний
progect1.rar
(133.41 КБ) 198 скачиваний
Мишаня86
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт окт 20, 2011 13:28:56
Откуда: Санкт-Петербург
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Мишаня86 »

Немного посидев и детально поразмыслив, понял, что один модуль все же мертв. Либо я его засадил, либо уже с магазина пришел такой..в общем заказал новый, буду биться дальше! :)
Аватара пользователя
RoboC
Мудрый кот
Сообщения: 1795
Зарегистрирован: Ср апр 04, 2012 09:55:53
Откуда: Северодонецк
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение RoboC »

Регистр статуса можно считывать без инициализации RFM01?

1.Опустил SDI
2.Опустил nSEL
3.Поднял SCK жду нажатия кнопки
4.Смотрю осциллографом SDO
5.наж кнопку опустил SCK и в п. 3

После 4 SCK на SDO появляется мусор или меандр(логически объяснить почему так - не могу).
Извратился с кнопкой, потому что Регистр статуса читается все время по разному.
Кто нить сталкивался?

RFM02 взлетел сразу.
У того, кто делает — получается редко. У того, кто не делает — не получается никогда.
Мишаня86
Первый раз сказал Мяу!
Сообщения: 21
Зарегистрирован: Чт окт 20, 2011 13:28:56
Откуда: Санкт-Петербург
Контактная информация:

Re: RF модули от HOPERF RFM01 & RFM02

Сообщение Мишаня86 »

RoboC писал(а):Регистр статуса можно считывать без инициализации RFM01?

1.Опустил SDI
2.Опустил nSEL
3.Поднял SCK жду нажатия кнопки
4.Смотрю осциллографом SDO
5.наж кнопку опустил SCK и в п. 3

После 4 SCK на SDO появляется мусор или меандр(логически объяснить почему так - не могу).
Извратился с кнопкой, потому что Регистр статуса читается все время по разному.
Кто нить сталкивался?


Бился с похожей темой, статус считывается по-разному! но в большинстве значения повторяются! По идее, после старта и считывания статуса должен быть только бит Power-on-reset. Но у меня иногда стоял бит высокий RSSI, а после инициализации еще ездили биты ACF регистра.
Ответить

Вернуться в «Периферия»