Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту

Автоматика и аппаратура связи Дистанционное и непосредственное управление исполнительными механизмами, сотовая, а также радиосвязь.

 
Опции темы

RFM22B-433-S2

Непрочитано 03.02.2012, 12:46  
yuta_86
Частый гость
 
Регистрация: 12.01.2011
Сообщений: 36
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
yuta_86 на пути к лучшему
По умолчанию RFM22B-433-S2

Добрый день, господа. Не знаю куда больше обратиться.
Приобрёл два модуля RFM22B-433-S2. пытаюсь заставить с одного модуля передавать инфу на другой. контроллер мега8. может у кого-то есть наработки по этой теме? жду помощи. спасибо.
Реклама:
yuta_86 вне форума  
Непрочитано 20.02.2012, 15:03  
yuta_86
Частый гость
 
Регистрация: 12.01.2011
Сообщений: 36
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
yuta_86 на пути к лучшему
По умолчанию Re: RFM22B-433-S2

Товарищи на приёмник ничего не поступает ((( что за дела кто может помочь?
код передатчика

Код:
#include ‹mega8.h›
#include ‹delay.h›
#include ‹stdio.h›

#define nIRQ PINC.3   //PINB.3
#define nSEL PORTC.2  //PORTB.2
#define nSCK PORTC.1  //PORTB.1
#define nSDI PORTC.0  //PORTB.0
#define nSDO PINB.2   //PIND.6

void SPI_WRITE(unsigned char Addr, unsigned char data)
{
unsigned char i=0;
Addr=Addr|0x80;          // Старший бит в адресе дб равен 1!!!

nSEL=0;
delay_us(10);
for (i=0; i‹8; i++)
        {
        nSDI=(Addr››(7-i))&0x01;
        delay_us(10);
        nSCK=1;
        delay_us(30);
        nSCK=0;
        delay_us(20);
        }
for (i=0; i‹8; i++)
        {
        nSDI=(data››(7-i))&0x01;
        delay_us(10);
        nSCK=1;
        delay_us(30);
        nSCK=0;
        delay_us(20);
        }
nSEL=1;                 // выборка чипа
delay_us(20);
}

unsigned char SPI_READ(unsigned char Addr)
{
unsigned char i=0;
unsigned char data=0;
Addr=Addr&0x7F;          // Старший бит в адресе дб равен нулю!!!

nSEL=0;
delay_us(10);
for (i=0; i‹8; i++)
        {
        nSDI=(Addr››(7-i))&0x01;
        delay_us(10);
        nSCK=1;
        delay_us(30);
        nSCK=0;
        //delay_us(200);
        delay_us(20);
        //if (i==8) LED_OUT(255);
        }
for (i=0; i‹8; i++)
        {
        nSCK=1;
        delay_us(30);
        data=data‹‹1;
        data|=(nSDO);
        nSCK=0;
        delay_us(20);
        }
nSEL=1;                 // выборка чипа
delay_us(20);
return data;
}

void SPI_RFM_INIT (void)
{
SPI_WRITE(0x06, 0x00); // interrupt all disable
SPI_WRITE(0x07, 01); // to ready mode
SPI_WRITE(0x09, 0x7f); // cap = 12.5pf
SPI_WRITE(0x0a, 0x05); //clk output is 2MHz
SPI_WRITE(0x0d, 0x00); // GPIO2 for MCLK output
SPI_WRITE(0x0e, 0x00); //GPIO port use default value
SPI_WRITE(0x0f, 0x70); // NO ADC used
SPI_WRITE(0x10, 0x00); //no adc used
SPI_WRITE(0x12, 0x00); // no temperature sensor used
SPI_WRITE(0x13, 0x00); // no temperature sensor used
SPI_WRITE(0x70, 0x20); // no mancheset code, no data whiting, data rate ‹ 30Kbps
SPI_WRITE(0x1c, 0x04); // IF filter bandwidth
SPI_WRITE(0x1d, 0x40); // AFC LOOP
SPI_WRITE(0x1e, 0x08); //AFC timing
SPI_WRITE(0x20, 0x41); //clock recovery
SPI_WRITE(0x21, 0x60); //clock recovery
SPI_WRITE(0x22, 0x27); //clock recovery
SPI_WRITE(0x23, 0x52); //clock recovery
SPI_WRITE(0x24, 0x00); //clock recovery timing
SPI_WRITE(0x25, 0x06); //clock recovery timing
SPI_WRITE(0x6e, 0x27); // Tx data rate 1
SPI_WRITE(0x6f, 0x52); // Tx data rate 0
SPI_WRITE(0x30, 0x8c); // data access control
SPI_WRITE(0x32, 0xff); // header control
SPI_WRITE(0x33, 0x42); // // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2,
SPI_WRITE(0x34, 64); // 64 nibble = 32byte preamble
SPI_WRITE(0x35, 0x20); //0x35 need to detect 20bit preamble
SPI_WRITE(0x36, 0x2d); // synchronize word
SPI_WRITE(0x37, 0xd4);
SPI_WRITE(0x38, 0x00);
SPI_WRITE(0x39, 0x00);
SPI_WRITE(0x3a, 's'); // set tx header
SPI_WRITE(0x3b, 'o');
SPI_WRITE(0x3c, 'n');
SPI_WRITE(0x3d, 'g');
SPI_WRITE(0x3e, 1); // total tx 17 byte
SPI_WRITE(0x3f, 's'); // set rx header
SPI_WRITE(0x40, 'o');
SPI_WRITE(0x41, 'n');
SPI_WRITE(0x42, 'g');
SPI_WRITE(0x43, 0xff); // all the bit to be checked
SPI_WRITE(0x44, 0xff); // all the bit to be checked
SPI_WRITE(0x45, 0xff); // all the bit to be checked
SPI_WRITE(0x46, 0xff); // all the bit to be checked

SPI_WRITE(0x6d, 0x03); // tx power to Max
SPI_WRITE(0x79, 0x0); // no frequency hopping
SPI_WRITE(0x7a, 0x0); // no frequency hopping
SPI_WRITE(0x71, 0x23); // Gfsk, fd[8] =0, no invert for Tx/Rx data, fifo mode, txclk --›gpio
SPI_WRITE(0x72, 0x48); // frequency deviation setting to 45k = 72*625
SPI_WRITE(0x73, 0x0); // no frequency offset
SPI_WRITE(0x74, 0x0); // no frequency offset
SPI_WRITE(0x75, 0x53); // frequency set to 434MHz
SPI_WRITE(0x76, 0x64); // frequency set to 434MHz
SPI_WRITE(0x77, 0x00);// frequency set to 434MHz

SPI_WRITE(0x0C,0b00010111);     // GPIO Configuration 0.
SPI_WRITE(0x0B,0b00011000);     // GPIO Configuration 1.

SPI_WRITE(0x08, 0x03); // fifo reset
SPI_WRITE(0x08, 0x00);
}

void SPI_RFM_INTREAD (void)
{
char temp;
temp = SPI_READ(0x03); //read the Interrupt Status1 register
temp = SPI_READ(0x04);
SPI_WRITE(0x05, 0x04); // interrupt is anable
}

void main(void)
{
// Declare your local variables here
unsigned char a=0;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Universal Serial Interface initialization
// Mode: Disabled
// Clock source: Register & Counter=no clk.
// USI Counter Overflow Interrupt: Off
//USICR=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;

PORTC=0b00001000;
DDRC =0b11110111;     // 3-ий бит - только чтение (вход)
PORTB=0b00000100;
DDRB =0b11111011;     // 2-ой бит - только чтение (вход)


delay_ms(500);

SPI_RFM_INIT();

SPI_RFM_INTREAD();



while (1)
      {
        SPI_WRITE(0x7F, a++);
        SPI_WRITE(0x07, 9);     // go to TX-mode
        while (PINC.3)
         {
          PORTB.1=0;
          delay_ms(100);
          printf("work... a=%d \n",a);
         }

        while (!PINC.3)
         {
          PORTB.1=1;
          SPI_RFM_INTREAD();
          delay_ms(100);
          printf("work2...a=%d \n",a);
         }
      };
}

код приёмника

Код:
#include ‹mega8.h›
#include ‹delay.h›
#include ‹stdio.h›

#define nIRQ PINC.3   //PINB.3
#define nSEL PORTC.2  //PORTB.2
#define nSCK PORTC.1  //PORTB.1
#define nSDI PORTC.0  //PORTB.0
#define nSDO PINB.2   //PIND.6

void SPI_WRITE(unsigned char Addr, unsigned char data)
{
unsigned char i=0;
Addr=Addr|0x80;          // Старший бит в адресе дб равен 1!!!

nSEL=0;
delay_us(10);
for (i=0; i‹8; i++)
        {
        nSDI=(Addr››(7-i))&0x01;
        delay_us(10);
        nSCK=1;
        delay_us(30);
        nSCK=0;
        delay_us(20);
        }
for (i=0; i‹8; i++)
        {
        nSDI=(data››(7-i))&0x01;
        delay_us(10);
        nSCK=1;
        delay_us(30);
        nSCK=0;
        delay_us(20);
        }
nSEL=1;                 // выборка чипа
delay_us(20);
}

unsigned char SPI_READ(unsigned char Addr)
{
unsigned char i=0;
unsigned char data=0;

nSEL=0;
delay_us(10);
for (i=0; i‹8; i++)
        {
        nSDI=(Addr››(7-i))&0x01;
        delay_us(10);
        nSCK=1;
        delay_us(30);
        nSCK=0;
        //delay_us(200);
        delay_us(20);
        //if (i==8) LED_OUT(255);
        }
for (i=0; i‹8; i++)
        {
        nSCK=1;
        delay_us(30);
        data=data‹‹1;
        data|=(nSDO);
        nSCK=0;
        delay_us(20);
        }
nSEL=1;                 // выборка чипа
delay_us(20);
return data;
}

void SPI_RFM_INIT (void)
{
SPI_WRITE(0x06, 0x00); // interrupt all disable
SPI_WRITE(0x07, 01); // to ready mode
SPI_WRITE(0x09, 0x7f); // cap = 12.5pf
SPI_WRITE(0x0a, 0x05); //clk output is 2MHz
SPI_WRITE(0x0C,0b00010111); //GPIO Configuration 0
SPI_WRITE(0x0B,0b00011000); //GPIO Configuration 1
SPI_WRITE(0x0d, 0x00); // GPIO2 for MCLK output
SPI_WRITE(0x0e, 0x00); //GPIO port use default value
SPI_WRITE(0x0f, 0x70); // NO ADC used
SPI_WRITE(0x10, 0x00); //no adc used
SPI_WRITE(0x12, 0x00); // no temperature sensor used
SPI_WRITE(0x13, 0x00); // no temperature sensor used
SPI_WRITE(0x70, 0x20); // no mancheset code, no data whiting, data rate ‹ 30Kbps
SPI_WRITE(0x1c, 0x04); // IF filter bandwidth
SPI_WRITE(0x1d, 0x40); // AFC LOOP
SPI_WRITE(0x1e, 0x08); //AFC timing
SPI_WRITE(0x20, 0x41); //clock recovery
SPI_WRITE(0x21, 0x60); //clock recovery
SPI_WRITE(0x22, 0x27); //clock recovery
SPI_WRITE(0x23, 0x52); //clock recovery
SPI_WRITE(0x24, 0x00); //clock recovery timing
SPI_WRITE(0x25, 0x06); //clock recovery timing
SPI_WRITE(0x6e, 0x27); // Tx data rate 1
SPI_WRITE(0x6f, 0x52); // Tx data rate 0
SPI_WRITE(0x30, 0x8c); // data access control
SPI_WRITE(0x32, 0xff); // header control
SPI_WRITE(0x33, 0x42); // // header 3, 2, 1,0 used for head length, fixed packet length, synchronize word length 3, 2,
SPI_WRITE(0x34, 64); // 64 nibble = 32byte preamble
SPI_WRITE(0x35, 0x20); //0x35 need to detect 20bit preamble
SPI_WRITE(0x36, 0x2d); // synchronize word
SPI_WRITE(0x37, 0xd4);
SPI_WRITE(0x38, 0x00);
SPI_WRITE(0x39, 0x00);
SPI_WRITE(0x3a, 's'); // set tx header
SPI_WRITE(0x3b, 'o');
SPI_WRITE(0x3c, 'n');
SPI_WRITE(0x3d, 'g');
SPI_WRITE(0x3e, 1); // total tx 17 byte
SPI_WRITE(0x3f, 's'); // set rx header
SPI_WRITE(0x40, 'o');
SPI_WRITE(0x41, 'n');
SPI_WRITE(0x42, 'g');
SPI_WRITE(0x43, 0xff); // all the bit to be checked
SPI_WRITE(0x44, 0xff); // all the bit to be checked
SPI_WRITE(0x45, 0xff); // all the bit to be checked
SPI_WRITE(0x46, 0xff); // all the bit to be checked

SPI_WRITE(0x6d, 0x03); // tx power to Max
SPI_WRITE(0x79, 0x0); // no frequency hopping
SPI_WRITE(0x7a, 0x0); // no frequency hopping
SPI_WRITE(0x71, 0x23); // Gfsk, fd[8] =0, no invert for Tx/Rx data, fifo mode, txclk --›gpio
SPI_WRITE(0x72, 0x48); // frequency deviation setting to 45k = 72*625
SPI_WRITE(0x73, 0x0); // no frequency offset
SPI_WRITE(0x74, 0x0); // no frequency offset
SPI_WRITE(0x75, 0x53); // frequency set to 434MHz
SPI_WRITE(0x76, 0x64); // frequency set to 434MHz
SPI_WRITE(0x77, 0x00);// frequency set to 434MHz

SPI_WRITE(0x08, 0x03); // fifo reset
SPI_WRITE(0x08, 0x00);
}

void SPI_RFM_INTREAD (void)
{
char temp;
SPI_WRITE(0x07,01);
temp = SPI_READ(0x03); //read the Interrupt Status1 register
temp = SPI_READ(0x04);
SPI_WRITE(0x07, 0x05); // interrupt is anable
}

void main(void)
{
// Declare your local variables here
unsigned char a=0;

PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;

TCCR0=0x00;
TCNT0=0x00;

TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;

// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x18;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x2F;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;


 PORTC.3=1;
  DDRC.3=0;
  PORTB.2=1;
  DDRB.2=0;

delay_ms(500);
    printf("begin1\n");
SPI_RFM_INIT();
     printf("begin2\n");
SPI_RFM_INTREAD();

     printf("begin3\n");

while (1)
     {
     if(!PINC.3)
         {
          a=SPI_READ(0x7F);
          printf("work... a=%d \n",a);
          SPI_RFM_INTREAD();
          while (!PINC.3);
         }
     }
}
хочу попробовать передавать число а=0..255 но тишина (((
yuta_86 вне форума  
Непрочитано 21.02.2012, 12:18  
yuta_86
Частый гость
 
Регистрация: 12.01.2011
Сообщений: 36
Сказал спасибо: 0
Сказали Спасибо 5 раз(а) в 5 сообщении(ях)
yuta_86 на пути к лучшему
По умолчанию Re: RFM22B-433-S2

неужели никто не знает? или никто не желает помогать начинающему? ((( печально
yuta_86 вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сабвуфер JB-433 baginas50 Аудиотехника 1 22.08.2010 18:12
Усилитель 433 Мгц Bf4 Автоматика и аппаратура связи 1 24.09.2009 04:28
Антенна на 433,92МГц bobdenis Автоматика и аппаратура связи 3 08.07.2008 14:39
Антенна на 433,92 МГц ssii Автоматика и аппаратура связи 2 27.01.2008 11:33


Часовой пояс GMT +4, время: 10:50.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.