Перейти к содержанию
    

Приветствую всех,

безуспешно пытаюсь наладить связь между модулями RFM12B на 433МГц, мучаюсь больше недели и всё-таки решил обратиться за помощью.

Перечитал форумы по этому вопросу, изучил примеры.

Имеются две пары RFM12B+ATmega8L, питание +3,3V, модули подключены к аппаратному SPI, на приёмном конце принятый байт(ы) передаю по RS232 на компьютер для контроля.

Судя по всему инициализация происходит корректно, у передающего модуля могу управлять частотой на выходе CLK, специально ходил к людям, у них на хорошем осциллографе видны пачки ВЧ импульсов, когда передатчик включен.

В приёмнике тоже управляется частота CLK. Прочитал что на конденсаторе в углу модуля можно смотреть аналоговый сигнал, показывающий силу принимаемого сигнала, так вот когда передатчик включен на нём есть импульсы амплитудой 0,6 Вольт примерно, в такт с включением передатчика. Если меняю частоту настройки приёмника, то при расстройке импульсы уменьшаются и потом совсем пропадают.

Инициализацию приёмника и передатчика делаю как тут было описано, однако приёма нет, тоесть в приёмнике вывод SDO всегда ноль.

Пробовал всякие варианты инициализации, скорость, частоту и т. д. ничего не помогает. Позволю себе привести отрывки из моего кода, как уже говорил многое позаимствовал с этого форума.

Пишу в CodeVisionAVR.

Буду очень благодарен за указание на ошибку.

 

функции ввода-вывода:

unsigned int transf_reg16(unsigned  int d){
unsigned int read=0;
CS=0;
delay_us (1); 
read=read|((spi(d>>8))>>8); //читаем и пишем старший байт
delay_us (1); 
read=read|spi(d);//читаем и пишем младший байт
delay_us (1); 
CS=1;
return read;
} 


void alpha_ready(void)
{	
while (!(MISO)); // wait until FIFO ready
}

 

 

//-----  инициализация  передатчика   -------

transf_reg16(0x80D7);
transf_reg16(0x8239); // передатчик
transf_reg16(0xA640);  
transf_reg16(0xC647);
transf_reg16(0x94A0);
transf_reg16(0xC2AC);
transf_reg16(0xCA81); 
transf_reg16(0xCEAB);                        
transf_reg16(0xC483);
transf_reg16(0x9850);
transf_reg16(0xCC77);
transf_reg16(0xE000);
transf_reg16(0xC800);
transf_reg16(0xC040);



//-----  инициализация  приёмника   -------

transf_reg16(0x80D7);
transf_reg16(0x8299); // приёмник
transf_reg16(0xA640);  
transf_reg16(0xC647); 
transf_reg16(0x94A0); 
transf_reg16(0xC2AC);
transf_reg16(0xCA81); 
transf_reg16(0xCEAB);                        
transf_reg16(0xC483);
transf_reg16(0x9850);
transf_reg16(0xCC77); 
transf_reg16(0xE000);
transf_reg16(0xC800);
transf_reg16(0xC040);


 

 

попытка передачи и приёма


// ----- передача  ----- 
void RF12_TXDATA(unsigned char *data, unsigned char number)
{	unsigned char i;
transf_reg16(0x8238);	// TX on
delay_ms(1);
transf_reg16(0xB8AA);
alpha_ready();
transf_reg16(0xB8AA);
alpha_ready();
transf_reg16(0xB8AA);
alpha_ready();
transf_reg16(0xB82D);
alpha_ready();
transf_reg16(0xB8D4);
for (i=0; i<number; i++)
{		alpha_ready();
	transf_reg16(0xB800|(*data++));
}
alpha_ready();
transf_reg16(0xB8AA);
alpha_ready();
transf_reg16(0xB8AA);
alpha_ready();
transf_reg16(0xB8AA);
delay_ms(1);	
   transf_reg16(0x8208);	// TX off
}


// ----- приём  ----- 
unsigned char RF12_RECV_(void) {
   unsigned int data;  
   unsigned int i; 
   i=0;
   transf_reg16(0xCA81); // FIFO Reset
   transf_reg16(0xCA83);
 while(1) {    
       data = transf_reg16(0x0000);
       i++;  
       if ( (data&0x8000) ) {
           data = transf_reg16(0xB000);
           return  data;  // возвращается байт
           }
       else if (i==0x1FFF) return 0;  // timeout
       }
   }

спасибо заранее

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тож задам вопросик. При опросе статус регистра при включении выдавал 0x4000, т.е. все ок. Далее начинал выдавать все время 01A0 или 0180 например. Прочитал что 1единичка это превышен уровень приходящего сигнала. Укоротил антенну примерно сантиметров до 14 и MSB стал показывать 00. Насколько я понимаю это правильно. Включаю передатчик тут же опять появляется единичка и в LSB появляется множество разных значений. Вроде как изменения lsb логичны, но непонятен смысл постоянного включения RSSI . При этом nirq никогда не опускается и B0 всегда выдает нули. В статус регистре так же никогда не поднимается бит о заполнение FIFO. Есть идеи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пока оставил попытки запустить RFM12B,

раздобыл два RFM22B, они сразу заработали. :biggrin:

Использовал демо проект от Ульрих Радиг.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А знает ли кто-нибудь, какая ошибка установки частоты передатчика должна быть? У меня на разных модулях несущая при одинаковых установках отличается на 5кГц. Это нормально или ошибку все таки следует учитывать и компенсировать поправкой?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

здравствуйте! у меня при приеме на rf12bp сначала считывается верный байт данных(тот который посылал), а затем считывается нулевой байт. Это ошибка или так модуль говорит что принят конец пакета?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кто пользовался, какой максимальной скорости вы добивались при передаче? У меня получилось 4 Кбайта/сек, больше никак.

Изменено пользователем arsinho

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот тоже решил покорить данные модули. Кто проверял максимальную дальность? Скорость не принципиальна...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

Вот уже неделю пытаюсь соединить между собой RFM12B-433S1. Код передалал из Меги8 на PIC16F873 и PIC16F887, то что под рукой есть. Запускаю передатчик, в COM- порт в цикле выдает "sende..." светодиод мерцает, ток потребления всей штуковины прыгает до 60мА при 5В. Все линии SPI шевелятся.

Запускаю приемник, SPI виснет. Один раз моргает светодиод, в СОМ-порту тишина.

Оба проекта прилагаю в архивчиках. Помогите разобраться, ткните пальцем, все ж я больше железячник нежели программер...

progect1.rar

progect2.rar

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день!

Вот уже неделю пытаюсь соединить между собой RFM12B-433S1.

 

На первой странице этого топика есть описание того как я запускал аналогичный модуль. Почитайте, сравните с тем что у Вас

Приведённый код работоспособен и используется в серийных проектах.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На первой странице этого топика есть описание того как я запускал аналогичный модуль. Почитайте, сравните с тем что у Вас

Приведённый код работоспособен и используется в серийных проектах.

Спасибо!! Я уже перепробовал многие коды, различные инициализации, но толк пока один...Попробую ваш код, может с ним повезет!! А может пора идти покупать новые модули :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!! Я уже перепробовал многие коды, различные инициализации, но толк пока один...Попробую ваш код, может с ним повезет!! А может пора идти покупать новые модули :)

Немного повозившись, понял, что один модуль все ж мертв! Или мои старания или сразу был из "морга"...Заказал новый, посмотрим, что будет дальше.. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На первой странице этого топика есть описание того как я запускал аналогичный модуль. Почитайте, сравните с тем что у Вас

Приведённый код работоспособен и используется в серийных проектах.

Все получилось! Использовал ваш код, немного подпилив под себя набросал его в CCS PIC и вуаля, все работает!!! 15 символов и возврат каретки вижу на второй машине в терминалке. Огромное спасибо!!

Жаль правда, что скачали проекты многие, а откликнулись лишь вы...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем добрый день!

Недавно начал использовать RFM12B-433.

Вроде все получилось пара устройства нормально связываются, обмен идет.

Но в поставленной задаче подразумевалось, что на одном объекте (склад, цех, завод, ...) может одновременно работать несколько независимых пар таких устройств. В принципе можно задать некоторое количество каналов, вот тут и возник вопрос: Как правильно рассчитать (подобрать) сетку частот для диапазона 433 MHz?

Полдня проискал в интернете, но внятной формулы не нашел. Есть правда таблицы, но все это для голосовой связи в основном.

Помогите, буду очень признателен.

 

Заранее спасибо за помощь!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем добрый день!

Недавно начал использовать RFM12B-433.

Вроде все получилось пара устройства нормально связываются, обмен идет.

Но в поставленной задаче подразумевалось, что на одном объекте (склад, цех, завод, ...) может одновременно работать несколько независимых пар таких устройств. В принципе можно задать некоторое количество каналов, вот тут и возник вопрос: Как правильно рассчитать (подобрать) сетку частот для диапазона 433 MHz?

Полдня проискал в интернете, но внятной формулы не нашел. Есть правда таблицы, но все это для голосовой связи в основном.

Помогите, буду очень признателен.

 

Заранее спасибо за помощь!

Не знаю пригодиться ли, но мне очень помогла схемка, зарубежного коллеги по этим модулям и его ПО, в частности настройки регистров да и вообще сам сканер, собирал на этом контроллере, все работает!

Посмотрите здесь: http://www.controller-designs.de/index.php...canner&sub=

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю пригодиться ли, но мне очень помогла схемка, зарубежного коллеги по этим модулям и его ПО, в частности настройки регистров да и вообще сам сканер, собирал на этом контроллере, все работает!

Посмотрите здесь: http://www.controller-designs.de/index.php...canner&sub=

Не совсем понятно, как вам помогло ПО, если учесть , что на этой странице нет ни одного доступного файла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...