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

Дисплеи, датчики и прочие функциональные узлы, управляемые МК.
Ответить
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

AI_Disable писал(а): Сам недавно приобрёл пару RFM12 и по одному RFM01 и RFM02. До последних пока не добрался, а с RFM12 разобрался - работают "на ура" :)) 50 метров тянут, более не проверял. Пишу на си, если нужно, кодом поделюсь :)
Я был бы вам очень признателен за исходники. Сам бьюсь с этими модулями. Пробовал все, что предлагает хопэрэф но не работает.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Реклама
Родился
Сообщения: 5
Зарегистрирован: Сб май 01, 2010 12:36:21

Сообщение shtalker »

Доброго времени суток!
Я, вот, тоже недавно приобрел 01 и 02 модули.
По радии слышны щелчки, но на IRQ лапе приемника всегда 1.
Пробовал несколько вариантов исходников и прочитать статус регистр.
никакого результата :(
работаю с ат2313.
p.s. "Здесь пример работы с модулями на CV AVR http://www.obersomer.com/furios-powe...d=77&Itemid=69" - ссылка бита
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб

Сообщение AI_Disable »

Код для работы с 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
}
Контактная информация:
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Спасибо. Попробую на днях
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 5
Зарегистрирован: Сб май 01, 2010 12:36:21

Сообщение shtalker »

Короче говоря, уже ничо не понимаю :)
Научился выводить на дисплей отклонение центральной частоты сигнала и пользоваться детектором напряжения питания, а банально передать что-то - никак :(
Использую заполнение буфера по DRRSI - идут FF.
Если ставить фильтр по синхрослову - ничего не выходит.
Что можно попробовать предпринять?
Реклама
Родился
Сообщения: 5
Зарегистрирован: Сб май 01, 2010 12:36:21

Сообщение shtalker »

разобрался - неправильно читал.
теперь передаются 8 байт, на выходе приемника получаю пару рандомных :(
Реклама
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб

Сообщение AI_Disable »

shtalker, очень сложно понять, что вы имеете виду и ещё сложнее, в чём проблема. Порой код говорит гораздо больше, чем его хозяин...
Контактная информация:
Родился
Сообщения: 5
Зарегистрирован: Сб май 01, 2010 12:36:21

Сообщение shtalker »

Общее:

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

unsigned int RFXX_WRT_CMD(unsigned int aCmd)
{ 
  unsigned char i; 
  unsigned int temp; 
  LOW_SEL(); 
  temp = 0;
  for(i=0;i<16;i++)
  { 
    LOW_SCK(); 
    _delay(16);
    temp<<=1; 
    if(SDO_HI()) temp|=0x0001; 
    if(aCmd&0x8000)
      HI_SDI(); 
    else
      LOW_SDI(); 
    HI_SCK(); 
    aCmd<<=1; 
    _delay(16);
  }
  LOW_SCK(); 
  HI_SEL(); 
  return(temp); 
}    
Передача:

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

void RF02B_SEND(unsigned char aByte)
{ 
  unsigned char i; 
  for(i=0;i<8;i++)
  { 
    while(SDO_HI());//Polling nIRQ 
    while(!SDO_HI()); 
    if(aByte&0x80)
      HI_DATA(); 
    else
      LOW_DATA(); 
    aByte<<=1; 
  }
}  

void RFXX_PORT_INIT(void)
{ 
  HI_SEL();
  HI_SDI();
  HI_SDO();
  LOW_SCK(); 
  SEL_OUTPUT(); 
  SDI_OUTPUT();
  SDO_INPUT();
  SCK_OUTPUT(); 
  HI_DATA();
  DATA_OUTPUT();  
  
  RFXX_WRT_CMD(0xCC00);//Status register read 
  RFXX_WRT_CMD(0x8F61);//band=433MHz, CLK = 10MHz, frequency deviation = 60kHz 
  RFXX_WRT_CMD(0xA640);//f=434MHz
  RFXX_WRT_CMD(0xC847);//BR = 4789bps
  RFXX_WRT_CMD(0xC220);//enable TX bit sinchronization, no Low Battary Detector
  RFXX_WRT_CMD(0xC001);//disable CLK pin
  RFXX_WRT_CMD(0xCC00);//Status register read 
}

void main(void) 
{  
  
  _delay(65000);

  RFXX_PORT_INIT();
  RFXX_WRT_CMD(0xC039);//START TX  
  RF02B_SEND(0xAA);//PREAMBLE 
  RF02B_SEND(0xAA);//PREAMBLE 
  RF02B_SEND(0xAA);//PREAMBLE 
  RF02B_SEND(0x2D);//HEAD HI BYTE 
  RF02B_SEND(0xD4);//HEAD LOW BYTE 
  RF02B_SEND(0x88);
  RF02B_SEND(0x77);
  RF02B_SEND(0xAA);//DUMMY BYTE 
  RF02B_SEND(0xAA);//DUMMY BYTE 
  RF02B_SEND(0xAA);//DUMMY BYTE 
  RFXX_WRT_CMD(0xC001);//CLOSE TX   
  while(1);
}
Прием:

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

void RFXX_PORT_INIT(void)
{ 
  HI_SEL(); 
  HI_SDI(); 
  LOW_SCK();
   
  SEL_OUTPUT(); 
  SDI_OUTPUT(); 
  SDO_INPUT(); 
  SCK_OUTPUT(); 
  nIRQ_INPUT();
  
  _delay(65000);
  
  RFXX_WRT_CMD(0x0000); 
  RFXX_WRT_CMD(0x8D8A);//433BAND,134kHz 
  RFXX_WRT_CMD(0xA640);//434MHz 
  RFXX_WRT_CMD(0xC847);//4.8kbps 
  RFXX_WRT_CMD(0xC2FF);			// AVR CLK: 10MHz
  RFXX_WRT_CMD(0xC42B);			// Data Filter: internal
  RFXX_WRT_CMD(0xC6F7);			// AFC settings: autotuning: -10kHz...+7,5kHz
  RFXX_WRT_CMD(0xE000);			// disable wakeuptimer
  RFXX_WRT_CMD(0xCC00);			// disable low duty cycle        
  RFXX_WRT_CMD(0x0000);

  RFXX_WRT_CMD(0xCE82);//use FIFO 
  RFXX_WRT_CMD(0xCE82 + 1); 
  RFXX_WRT_CMD(0xC009);//OPEN RX 
  RFXX_WRT_CMD(0x0000);
}

unsigned char RF01_RDFIFO(void)
{ 
  unsigned char i,Result; 
  LOW_SCK(); 
  LOW_SDI(); 
  LOW_SEL(); 
  for(i=0;i<16;i++)
  {//skip status bits 
    HI_SCK(); 
    HI_SCK(); 
    LOW_SCK(); 
    LOW_SCK(); 
  } 
  Result=0; 
  for(i=0;i<8;i++)
  {//read fifo data byte 
    Result<<=1; 
    if(SDO_HI())
    { 
      Result|=1; 
    } 
    HI_SCK(); 
    HI_SCK(); 
    LOW_SCK(); 
    LOW_SCK(); 
  }; 
  HI_SEL(); 
  return(Result); 
}

void main(void)
{ 
  unsigned int i;
  for (i = 0; i < 65000; ++i);
  
  lcd_init(16);    
  RFXX_PORT_INIT();
  lcd_gotoxy(0,0);
  lcd_putsf("CPU STARTED");
  for (i = 0; i < 65000; ++i);
  while (1)
  {
    if (RFXX_WRT_CMD(0x0000)&0x8000))
    {//polling the nIRQ data
      i = RF01_RDFIFO();
      RFXX_WRT_CMD(0xCE82);
      RFXX_WRT_CMD(0xCE82 + 1); // очищаем фифо
      to_print(i);
    } 
  }
}
Родился
Сообщения: 5
Зарегистрирован: Сб май 01, 2010 12:36:21

Сообщение shtalker »

Короче говоря, я смог реализовать передачу RFM12 -> RFM01.
Скорость 2400, модуляция 90кГц, 8 байт данных.
Пробовал два разных RFM02 - ни с одним не получилось.
В рации слышится шум, в приемнике псевдослучайная последовательность битов...
Открыл глаза
Аватара пользователя
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Сообщение Maxxon »

В тему:

тут проскакивала битая ссылка на пример с RFM12, вот правильный URL http://www.obersomer.com/furios-power/i ... &Itemid=69

Сам вот только что запаял RFM01 на мегу32 и RFM02 на тини2313 и начал разбираться...
Открыл глаза
Аватара пользователя
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург
Re:

Сообщение Maxxon »

_noise писал(а): 2.4. Читаем статус, видим в первых четырёх битах причину прерывания: IT, FFOV, WK-UP или LBD. После чтения статуса флаг прерывания автоматически сбрасывается. См. RF01.pdf, стр. 17.
Не совсем понимаю как прочитать статус, куда записывается значение после отсылки команды запроса статуса?

Передатчик передает преамбулу, синхру, пяток байт данных и несколько dummy байт, коннект с приемником есть, передача-прием идет, но в fifo одни нули, срабатывает прерывание. Очень хочется понять причину...

Железо - mega32+RFM01 и tiny2313+RFM02.
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб

Сообщение AI_Disable »

Для чтения статус регистра делаем CS активным, отправляем старший байт 0x00, затем, отправляем произвольный байт и одновременно ловим содержимое статус регистра, вырубаем CS.
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Сообщение Maxxon »

Прошу прощения, нельзя ли чуточку поподробнее? Или рабочий пример на си если есть...

Что означает аббревиатура CS в данном контексте? То, что надо отправить нули для чтения статуса - понятно из даташита, но зачем отправлять произвольный байт после этого? И где все-таки ловим содержимое статус регистра, в неком регистре контроллера или на какой-то из ног RFM, например как fifo?

Кстати, было бы очень интересно узнать как можно промониторить передачу-прием. Облазил русские, английские, немецкие сайты, где встречались комбинации RFM01 или RFM12, народ везде пишет что как-то читают что и куда передается, но никто не описал последовательность действий. Предполагаю, что включают УАРТ и смотрят на посл. порту компа что туда сыпется. Это так?
В моем случае, я выкидываю полученное на LCD, но это весьма неудобно...

Было бы очень интересно понаблюдать за наполнением данных очереди по каждому пойманному фрейму...
Сверлит текстолит когтями
Аватара пользователя
Сообщения: 1116
Зарегистрирован: Чт окт 15, 2009 14:16:18
Откуда: Екб

Сообщение AI_Disable »

Я тоже вывожу на ЖКИ, имхо всё удобно. Рабочий пример выкладывал на предыдущей странице. CS (SS) - это название одного из проводов SPI. Произвольный байт передаём, чтоб мучить клок и тем временем принимать содержимое статус регистра с провода MISO.
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Сообщение Maxxon »

Теперь все проясняется. Спасибо!

Отпишусь как попробую.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 361
Зарегистрирован: Чт дек 28, 2006 12:46:58
Откуда: Хлынов

Сообщение MiklSh »

Может у меня конечно гугля не такая как у всех, но как же задолбалось искать рабочий пример связки RFM01+RFM02 ... не нашел. >:-\
Притом, что по варианту из даташита эта пара ну ни как не хотела работать.
"Мы в город изумрудный идем дорогой трудной....". Путем проб и ошибок, бессонной ночи и жестоким надругательством над ATtiny2313 ... родилось, блин.
Вообщем для потомков,так сказать, рабочий вариант, с каментами в исходнике.
Вложения
RFM01+RFM02.ZIP
(255 КБ) 876 скачиваний
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Сообщение Maxxon »

РЕСПЕКТИЩЕ! :beer:

Я тоже рабочих примеров не видел, колупал даташиты, да сравнивал с RFM12. Пока что долбит нулями и дергает прерывание. Попробую прогнать этот пример на досуге.

Насколько я понимаю, примеры с даташитов рабочие, но есть загвоздка с FIFO. Тут есть недомолвки в документации: в примерах используется CE88 для инициализации и CE8B для очистки (разница - 9). Почему именно CE8B - не совсем очевидно. На предыдущей странице - CE82 и (CE82 + 1) для очистки (разница 1).
Объясните мне, пожалуйста, как правильно очищать очередь... :oops:

P.S.: CE82 & CE82+1 <-- с этой инициализацией примеры из даташита что-то передают/принимают, срабатывает прерывание по переполнению, с другой - нет.
Потрогал лапой паяльник
Аватара пользователя
Сообщения: 361
Зарегистрирован: Чт дек 28, 2006 12:46:58
Откуда: Хлынов

Сообщение MiklSh »

У меня заработало только после того как помимо очистки FIFO начал сбрасывать-выставлять бит Sync Word в том же регистре CExx - иначе образовывалась псевдо случайная каша. Смотрите мой исходник, там это есть.
. . .
Добавлено позже:
0xCE84 / 0xCE87, и еще, то над чем долго думал - если после подключения питания перед инициализацией не скомандовать 0xC0D8 - "выкл. приемника", то RFM01 прикидывалась шлангом и эфир слушать ну ни как не хотела.
Контактная информация:
Нашел транзистор. Понюхал.
Аватара пользователя
Сообщения: 190
Зарегистрирован: Сб июн 12, 2010 16:19:17
Откуда: Россия, Томск

Сообщение Zheleznjakov »

Всем, привет!
Не много не в тему, но кто будет пробовать RFM22-433 обратите внимание не работают при температуре окружающей среды меньше -25 градусов.
Производитель эо подтверждает, в еррате правда написанно что можно устранить но в реале не получилось, написал произведителю сейчас жду замену новые модули без этой проблемы RF22B-433.
Внешний вид макетки можно глянуть у меня на сайте :)
С уважением, Денис Железняков aka ZiB
Мой блог: http://ziblog.ru
Контактная информация:
Открыл глаза
Аватара пользователя
Сообщения: 43
Зарегистрирован: Пт апр 09, 2010 12:54:00
Откуда: Санкт-Петербург

Сообщение Maxxon »

Господа, боюсь, без вашей помощи не обойтись. Бьюсь уже 4-5 суток (суммарно), но эффекта почти никакого :(
В аттаче лежат схемы и код для обеих сторон. Коннект между модулями в данный момент есть, передатчик передает последовательность из преамбулы, синхрослова, 16 байт и пустого байта по окончании. Приемник видит сигнал, дергает прерывание по заполнению буфера (правда, в данный момент почему-то один раз за две передачи), однако в полученном массиве вижу мусор (правда, попадаются "нужные" байты) или нули (если разнести приемник и передатчик на расстояние). На видео по этой ссылке видно как это происходит: http://www.youtube.com/watch?v=ywUR5jCCt6U
Перелопатил И перепробовал кучу примеров, включая те, что были в этой теме. Код передатчика в CVAVR, код приемника в AVR Studio, под конец уже методом "тыка"...
Кстати, в таком виде работает тоже до какой-то поры, а затем перестает принимать что либо...

Инициализация передатчика:

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

8B81  -  433 MHz band, 12.5 pF crystal load capacitor, 2 MHz clock output, df(fsk) = 60 kHz, ms : FSK sign = 0
A640  -  Set center frequency to 434 MHz
C811  -  Set datarate to 19.15708 kbps
C220  -  Vlb = 2.2 V, dwc : Disable wake-up timer calibration = 0, ebs : Enable TX bit synchronization = 1
C001  -  a1 : Automatic control Bit1 = 0, a0 : Automatic control Bit0 = 0, ex : Enable crystal oscillator = 0, es : Enable synthesizer = 0, 
ea : Enable power amplifier = 0, eb : Enable low battery detector = 0, et : Enable wake-up timer = 0, dc : Disable clock output = 1
Затем включаю синтезатор и усилитель для передачи

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

C039 - a1 : Automatic control Bit1 = 0, a0 : Automatic control Bit0 = 0, ex : Enable crystal oscillator = 1, es : Enable synthesizer = 1
ea : Enable power amplifier = 1, eb : Enable low battery detector = 0, et : Enable wake-up timer = 0, dc : Disable clock output = 1
И по окончании передачи выключаю командой C001.

Приемник у меня пуллит данные с ноги nIRQ. Инициализация:

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

0000  -  Flush
C008  -  en : Enable receiver ch. / crystal osc. = 0, VDI output = DRSSI, LNA gain = 0 dB, RSSI threshold = -79 dBm
8D8A  -  eb : Enable low battery detector = 1, et : Enable wake-up timer = 0, ex : Enable crystal osc. during sleep = 1, 
dc : Disable clock output = 0, Select 433 MHz band, Select 12.5 pF crystal load capacitor, Receiver bandwidth = 134 kHz
A640  -  Set center frequency to 434 MHz
C811  -  Set datarate to 19.15708 kbps
C2FF  -  Vlb = 2.2 V, Clock output = 1 MHz
C42B  -  al : Clock recovery auto lock = 0, ml : Clock recovery lock control = 0, Filter type = Digital, DQD threshold = 3
C6F7  -  AFC automatic mode = Offset always, st : Strobe edge = 0, fi : Fine mode = 1, oe : Offset register enable = 1
en : Calculate offset = 1, Range limit = +3fres to -4fres, Max. Deviation = +7.5kHz to -10kHz
E000  -  T wakeup = 0 ms (disabled)
CC00  -  en : Enable low duty-cycle = 0, Duty-cycle = N/A (disabled)
0000  -  Flush
CE80  -  ff : FIFO fill = 0, fe : Enable 16 Bit FIFO = 0, FIFO fill start condition = VDI, FIFO IT level = 8
CE83  -  ff : FIFO fill = 1, fe : Enable 16 Bit FIFO = 1, FIFO fill start condition = VDI, FIFO IT level = 8
C009  -  en : Enable receiver ch. / crystal osc. = 1, VDI output = DRSSI, LNA gain = 0 dB, RSSI threshold = -79 dBm
0000  -  Flush
После получения массива внутри цикла далее идет очистка очереди таким же способом (CE80, CE83) - насколько я понял, для того, чтобы очистить очередь, надо снять два младших бита, а затем их выставить снова.

Примеры из предыдущих сообщений почему-то не работают у меня. Инит очереди CE84/CE87 у меня проходит, но буфер, очевидно, не заполняется, так как прерывание не происходит. Нашел зависимость состояния регистра "Receiver Setting" и регистра "FIFO". Если ставлю CE84/CE87 и инит ресивера по POR (COC1), нога nIRQ дрыгается как бешеная и в массив сыпятся рандомные байты (вряд ли у меня счетчик или холодильник фонит на этой частоте :) ). Причем, даже при выключенном передатчике.

В общем, я зашел в тупик. Не судите строго, контроллерами я заинтересовался пару-тройку месяцев назад, до этого как бы не сталкивался с ними с паяльником в руке. Передатчики-приемники - только аналоговые. По роду деятельности, я сисадмин/программист (в основном скриптинг и джава, но в универе когда-то си++ преподавали, что-то помню).
Документацию по модулям перечитал не один раз, мог что-то упустить, а что-то не понять. Может оказаться что я неправильно запаял модули на контроллеры или данные надо сливать с других ног. Поэтому приложил схемки.

Частота контроллера mega32 с приемником - 16 Мгц (после удачного спаривания с передатчиком планируется также сливать инфу по USB), стабилизация - кварц.
Частота контроллера tiny2313v с передатчиком - 8 Мгц (заводская установка, снят фьюз деления на 8 ), стабилизация - внутренняя цепочка.

Буду очень признателен, если кто-нибудь сможет прокомментировать мои ошибки и недочеты. В профиле, в графе "Род занятий" указан мой скайп, на связи почти круглые сутки - велкам!
Вложения
rfm01_02_bad.zip
Схемы и код (си)
(21.79 КБ) 422 скачивания
Ответить

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