реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> RFM01-RFM02 от Hope Microelectronics Есть несколько вопросов..., Кто нибудь включал?
Григорий2000
сообщение Feb 21 2009, 22:27
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210



Включил передатчик, заставил передавать периодически пакет. Пакет передается(TV -Tuner принимает что-то). С приемника снимаю сигнал RSSI в нужном виде(огибающая длительности пакета) - то есть уже близко))).
Но не могу заставить принять именно данные - не формирует сигнал прерывания по заполнению буфера. Возможно неправильно настроил параметры передатчика/приемника. Делал как в примере за исключением команд передатчика 0xD040 (так как ненашел на нее описания ) вместо нее 0xD240, и скорость взял еще ниже(0xC88F). и соответственно только скорость в приемнике.
итак RX
SendWordRF(0x0000);
SendWordRF(0x898A);//433BAND,134kHz
SendWordRF(0xA640);//434MHz
SendWordRF(0xC8С7);//2.4kbps
SendWordRF(0xC69B);//AFC setting
SendWordRF(0xC42A);//Clock recovery manual control,Digital filter,DQD=4
SendWordRF(0xC260);//output 2MHz
SendWordRF(0xC080);
SendWordRF(0xCE84);//use FIFO
SendWordRF(0xCE87);
SendWordRF(0xC081);//OPEN RX


TX
SendWordRF(0xCC00);//Status Register read command - clear last service interrupt...
SendWordRF(0x8B61);//433BAND,+-60kHz, 2MHzOut
SendWordRF(0xA640);//434MHz
SendWordRF(0xD240);//(DRate/2)-было0xD040 - max DataRate 19.2
SendWordRF(0xC88F);//2.4kbps
SendWordRF(0xC220);//enable bit sync //
SendWordRF(0xC001);//CLOSE ALL
Go to the top of the page
 
+Quote Post
Григорий2000
сообщение Feb 24 2009, 11:36
Сообщение #2


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210



Вопрос снят))
Дело было не в бобине...
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Mar 5 2009, 21:54
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(Григорий2000 @ Feb 24 2009, 14:36) *
Вопрос снят))
Дело было не в бобине...

А в чем было дело? Мне запустить так и не удалось. Передатчик вроде работает, но не так как хотелось бы - никак не усыпить его полностью. Если остановить кварцевый генератор, то модуль засыпает навсегда. sad.gif
А приемник вообще не реагирует на передачу. Как раз нет прерывания по заполнению FIFO. А может и совсем не работает. Примеры какие то кривые. Повторять один в один их не хочется - постоянный поллинг сводит полезность FIFO к 0. А прерывания нет. Я уж решил что приемник умер в результате экспериментов, но сегодня заменил с тем же результатом. Все что удается добиться - изменить частоту такта. У Вас работает именно с той инициализацией, что Вы в первом посте привели?

Пошел к производителю, скачал RF01 programming guide. Чудеса, он уже другой. nIRQ теперь вообще не используется. А я с него прерывание жду. И зачем он тогда вообще? Сейчас попробую переделаться в соответствии с новой политикой партии. Эх, китайцы....
Go to the top of the page
 
+Quote Post
Григорий2000
сообщение Mar 5 2009, 22:03
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210



У меня по невнимательности осталось две подпрограммы в основной функции. Одна с поллингом, вторая по инту... приемник 2 байта ловил и его та что с поллингом опрашивала и заново заряжала на прием...
Сейчас уже не скажу та-ли инициализация или нет.. щас минут через 10 кину последнюю рабочую иициализацию для обоих модулей.
и инты работают(вы точно на той что нужно ноге смотрите??)))
При работе с интом я (как и всегда) поставил срабатывание по срезу,но иногда (не понял почему) возникала ситуация когда в обработчике возникал еще один запрос, который ес-но я неловил уже и линия инта ложилась в ноль...
я кварцевый генератор не останавливал(кажется) только усилитель мощности.
я так понял кварц нужно тормозить в случае пользования wakeup (кажется так пишется), тогда он и проснется и проз может разбудить

передатчик:
Код
SendWordRF(0x0000);
    SendWordRF(0xC0E0);
    SendWordRF(0x8B83);//(0x8B61) 433BAND,+-90(ïî ìîåìó 60)kHz, 2MHzOut 0x8B67 dF=210kHz
    SendWordRF(0xC2A0);//enable bit sync //    
    SendWordRF(0xA640);//434MHz    
    SendWordRF(0xB000);
    SendWordRF(0x8B83);//(0x8B61) 433BAND,+-90(ïî ìîåìó 60)kHz, 2MHzOut 0x8B67 dF=210kHz

    SendWordRF(0xCC00);//Status Register read command - clear last service interrupt...

    SendWordRF(0xD2C0);//max DataRate 19.2
    SendWordRF(0xC800|((344828UL/19200)-1));//4.8kbps
    

    //SendWordRF(0xC001);//CLOSE ALL
    
    MCUCR &= 0xF0;
    MCUCR |= (1<<ISC01)|(0<<ISC00);
    GICR = (1<<INT0);

сами расшифруйте по даташиту(коментарии могут быть неверными)

приемник:
    SendWordRF(0x0000);
    SendWordRF(0xA000 | (unsigned int)(((434-430)/0.0025)));//434MHz
    SendWordRF(0x8978);//898A - 433BAND,167kHz; 898C - 67kHz 0x8978-200kHz

    SendWordRF(0xC800|((344828UL/19200)-1));//19200
    SendWordRF(0xC6F7);//AFC setting  
    SendWordRF(0xC42A);//autolock-off, slowmode,,Digital filter,DQD=3
    SendWordRF(0xC260);//output 2MHz
    SendWordRF(0xC008);
    SendWordRF(0xCE88);//use FIFO
    SendWordRF(0xCE8B);
    SendWordRF(0xC009);//OPEN RX
    
    
    MCUCR &= 0xF0;
    MCUCR |= (1<<ISC01)|(0<<ISC00);
    GICR = (1<<INT0);


тестовый инт передатчика
    if (BufferTX.FlagTX == 0)return;        

    if (BufferTX.BitPoint == 0)
    {
        if (BufferTX.BytePoint != 0)
        {
            BufferTX.BytePoint--;
            BufferTX.BitPoint = 7;
            if ((BufferTX.DataBufer[BufferTX.BytePoint]) & (1<<(BufferTX.BitPoint)))
                PORT_FSK = 1;
            else
                PORT_FSK = 0;
        }
        else
        {//Stop transmit
            SendWordRF(0xC001);
            BufferTX.FlagTX = 0;        
        }
    }
    else
    {
        BufferTX.BitPoint--;
        if ((BufferTX.DataBufer[BufferTX.BytePoint]) & (1<<(BufferTX.BitPoint)))
            PORT_FSK = 1;
        else
            PORT_FSK = 0;
        
    }

тестовый инт приемника:
    static unsigned char OldNumber=0;
    unsigned char Byte = ReadFIFO();
    if ( BufferTX.BytePoint == 0)
    {
        if (Byte==0x55)
        {
            BufferTX.DataBufer[BufferTX.BytePoint] = Byte;
            BufferTX.BytePoint = 1;
        }
        else
        {
            SendWordRF(0xCE88);//use FIFO
            SendWordRF(0xCE8B);
        }
    }
    else
    {
        BufferTX.DataBufer[BufferTX.BytePoint] = Byte;
        BufferTX.BytePoint= (BufferTX.BytePoint+1)&0x0F;
    
        if ((BufferTX.BytePoint) >=7)
        {
            Byte = BufferTX.DataBufer[1];
            Byte = Byte ^ BufferTX.DataBufer[2];
            Byte = Byte ^ BufferTX.DataBufer[3];
            Byte = Byte ^ BufferTX.DataBufer[4];
            Byte = Byte ^ BufferTX.DataBufer[5];

            if(Byte == BufferTX.DataBufer[6])
            {
                if (OldNumber !=  BufferTX.DataBufer[2])
                {
                    ExecutePacket.Volume= BufferTX.DataBufer[4];
                    ExecutePacket.Song= BufferTX.DataBufer[3];
                    ExecutePacket.Mode= BufferTX.DataBufer[5];
                    ExecutePacket.Flag = 1;
                    
                }
                OldNumber =  BufferTX.DataBufer[2];
            }
                

            BufferTX.BytePoint = 0;
            RFTimer = 0xF001;
            SendWordRF(0xCE88);//use FIFO
            SendWordRF(0xCE8B);
        }
    }    
    
    MCUCR |=((1<<ISC01)|(0<<ISC00));
    PORTC &= ~0x80;


Сообщение отредактировал Григорий2000 - Mar 5 2009, 22:16
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Mar 6 2009, 00:08
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Спасибо! У меня правда уже задышало. Обновил пример, сделал на его основе и коннект установился. Хотя ошибка моя была в другом - я пытался запустить передачу в другом режиме, в том где данные берутся с SDI. А данные гнал по FSK. Т.е. старт передачи не 0xC039, а 0xC6 - Data Transmit Command. В результате передатчик слал непонятно что. Признака начала пакета в посылке ес-но не было. Ну и инта на приемнике соответственно ждать можно было вечно. sad.gif Может теперь и разбудить передатчик получится. Хотя еще не попробовал. В описании к Power Management Command есть бит а1 - Crystal oscillator and synthesizer are enabled by Data transmit Command and disable by Sleep command. Если генератор работает, то передатчик прилично кушает, гораздо больше спящей 48-ой меги. В сон модуль уходил, но Data Transmit Command его разбудить почему то не могла. Буду мучать зверушку дальше. Надо будет первый модуль обратно запаять smile.gif
Кстати еще вопрос - Вы на дальность связку не проверяли? И какую антенну используете?
Go to the top of the page
 
+Quote Post
Григорий2000
сообщение Mar 6 2009, 05:38
Сообщение #6


Частый гость
**

Группа: Участник
Сообщений: 77
Регистрация: 13-03-06
Пользователь №: 15 210



Нет непроверял еще, а антенна - кусок провода(около 17 см ). Как собрал пришлось растаться - демо версия.
А кристалл останавливал конечно( в interrupt прередатчика //Stop transmit : SendWordRF(0xC001)wink.gif
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Mar 6 2009, 14:00
Сообщение #7


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Четвертьволновой штырь имеет куда большую эффективность, чем печатные/чип антенны. Я так на чипконе связь запустил со штырем - все отлично было. Поставил чип антенну и дальность упала больше чем в два раза. sad.gif
Кстати в приемнике лучше использовать прерывание по низкому уровню - тогда никаких пропусков не будет. Кроме того это прерывание не требует включенного генератора в контроллере.
Действительно, генератором передатчика можно управлять через Power Management Command. И выключить и включить. Интересно, зачем тогда команда Sleep Command? smile.gif
Go to the top of the page
 
+Quote Post
Mad-man
сообщение Jun 26 2010, 17:13
Сообщение #8


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995



Всем привет,

инициализирую чип RFM01 как китайском в примере (на прием), и нифига не приходит, не выставляется бит фифо, не приходит прерывание. (уже перепробовал несколько вариантов - из документации и 2 примера отсюда)

статус в цикле вычитывается одно из следущего
(описания битов статуса я взял от другого чипа, тк в даташите нету описания статуса!! они скорее неправильные)

0x4104 (LB CRLCK 01)
0x4105 (LB RSSI_AT CRLCK 01)
0xC104 (LB GDQD CRLCK 01)
0xC105 (LB RSSI_AT GDQD CRLCK 01)


Если пробовать читать фифо в цикле - там всегда все по нулям.

помогите cranky.gif

Антенка керамическая RainSun я вот думаю может мне ее на 868Мгц подсунули вместь 433


void RFXX_PORT_INIT(void)
{
PORTC = 0b00000000;
DDRC = 0b00000000;

PORTD = 0b00000000;
DDRD = 0b00000000;

HI_SEL();
HI_SDI();
LOW_SCK();

SEL_OUTPUT();
SDI_OUTPUT();
SDO_INPUT();
SCK_OUTPUT();
}


void RF01_ChipInit()
{
SendWordRF(0x0000);
SendWordRF(0xA000 | (unsigned int)(((434-430)/0.0025)));//434MHz
SendWordRF(0x8978);//898A - 433BAND,167kHz; 898C - 67kHz 0x8978-200kHz

SendWordRF(0xC800|((344828UL/19200)-1));//19200
SendWordRF(0xC6F7);//AFC setting
SendWordRF(0xC42A);//autolock-off, slowmode,,Digital filter,DQD=3
SendWordRF(0xC260);//output 2MHz
SendWordRF(0xC008);
SendWordRF(0xCE88);//use FIFO
SendWordRF(0xCE8B);
SendWordRF(0xC009);//OPEN RX

}

unsigned int RFXX_WRT_CMD(unsigned int aCmd)
{
unsigned char i;
unsigned int temp = 0;

LOW_SCK();
LOW_SEL(); // chip select
for (i=0; i<16; i++)
{
temp<<=1;
if (SDO_HI())
temp |= 0x0001;


LOW_SCK2();

if (aCmd & 0x8000)
HI_SDI();
else
LOW_SDI();

HI_SCK2();

aCmd <<= 1;
}
LOW_SCK();
HI_SEL();
return temp;
}



void RFXX_TEST()
{
_delay_ms(500);

RFXX_PORT_INIT();
RF01_ChipInit();
INT_INPUT();
MCUCR |= (1<<ISC01)|(0<<ISC00);
GICR |= (1<<INT0); // INT0 enabled



while (1)
{
if (INT_LOW())
{
Togle_LED_on();
}


Ret = RFXX_WRT_CMD(0b00000000);

if (Ret) // & 0b1000000000000000)
{
Print_Word(Ret); Send_UART(" "); PrintStatus(Ret);
}

}
}





тут дефинишины для полноты картины


#define PORT_SEL PORTC
#define PIN_SEL PINC
#define DDR_SEL DDRC

#define PORT_SDI PORTC
#define PIN_SDI PINC
#define DDR_SDI DDRC

#define PORT_SCK PORTC
#define PIN_SCK PINC
#define DDR_SCK DDRC

#define PORT_SDO PORTC
#define PIN_SDO PINC
#define DDR_SDO DDRC

#define PORT_INT PORTD
#define PIN_INT PIND
#define DDR_INT DDRD


#define RFXX_SCK 4 // PC4
#define RFXX_SDI 5 // PC5
#define RFXX_SEL 6 // PC6
#define RFXX_SDO 7 // PC7
#define RFXX_INT 2 // PD2

#define SEL_OUTPUT() DDR_SEL |= (1<<RFXX_SEL)
#define HI_SEL() PORT_SEL |= (1<<RFXX_SEL)
#define LOW_SEL() PORT_SEL &= ~(1<<RFXX_SEL)

#define SDI_OUTPUT() DDR_SDI |= (1<<RFXX_SDI)
#define HI_SDI() PORT_SDI |= (1<<RFXX_SDI)
#define LOW_SDI() PORT_SDI &= ~(1<<RFXX_SDI)

#define SDO_INPUT() DDR_SDO &= ~(1<<RFXX_SDO)
#define SDO_HI() PIN_SDO & (1<<RFXX_SDO)

#define SCK_OUTPUT() DDR_SCK |= (1<<RFXX_SCK)
#define HI_SCK() PORT_SCK |= (1<<RFXX_SCK)
#define LOW_SCK() PORT_SCK &= ~(1<<RFXX_SCK)

#define INT_INPUT() DDR_INT &= ~(1<<RFXX_INT)
#define INT_HI() (PIN_INT & (1<<RFXX_INT))
#define INT_LOW() (!INT_HI())

Сообщение отредактировал Mad-man - Jun 26 2010, 17:24
Go to the top of the page
 
+Quote Post
Mad-man
сообщение Jun 27 2010, 11:43
Сообщение #9


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995



Блин, пропали все ((( Зат**ся с этим RF01 ничего не выходит, перепаял антенку,

теперь командой SendWordRF(0x0000);
вычитываются нолики (( молчит, гадюка, как партизан...
похоже что даже инициализация не проходит..

У меня еще 2 вороса

1. Обязательно ли использовать кристал на 10Мгц на avr? У мня кристал на 3.57Мгц. Как я понял чип работает в слейв режиме и ему должно быть фиолетово с какой частотой приходит SCK?
2. Нужно ли использовать ногу DATA? Она на схеме подтянута к VCC, а в коде поднимается
командой DDRB |=(1<<RFXX_DATA); сразу после инициализации чипа!

Сообщение отредактировал Mad-man - Jun 27 2010, 11:45
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Jun 28 2010, 09:12
Сообщение #10


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(Mad-man @ Jun 27 2010, 15:43) *
Блин, пропали все ((( Зат**ся с этим RF01 ничего не выходит, перепаял антенку,

Не расстраивайтесь раньше времени, сейчас разберемся.

Цитата(Mad-man @ Jun 27 2010, 15:43) *
1. Обязательно ли использовать кристал на 10Мгц на avr?

Нет конечно. Я вообще с внутренними RC использовал.

Цитата(Mad-man @ Jun 27 2010, 15:43) *
2. Нужно ли использовать ногу DATA? Она на схеме подтянута к VCC, а в коде поднимается
командой DDRB |=(1<<RFXX_DATA); сразу после инициализации чипа!

Нет, если используется FIFO. В этом режиме все управление/обмен данными идет через SPI.
В коде либо не используется FIFO, либо под RFXX_DATA подразумевается MOSI.
Я с RFM01 не закончил, появились более приоритетные дела. Но связь с RFM02 была.
Инициализация RFM01 была такая
Код
#define        RFM01_BAUD_2400        ((uint8_t)((344827.58/2400)+0.5)-1)
#define        RFM01_BAUD_4800        ((uint8_t)((344827.58/4800)+0.5)-1)
#define        RFM01_BAUD_9600        ((uint8_t)((344827.58/9600)+0.5)-1)
#define        RFM01_BAUD_19200    ((uint8_t)((344827.58/19200)+0.5)-1)
#define        RFM01_BAUD_38400    ((uint8_t)((344827.58/38400)+0.5)-1)
#define        RFM01_BAUD_115200    ((uint8_t)((344827.58/115200)+0.5)-1)

#define RFM01FREQ(freq)    ((uint16_t)((freq-430.0)/0.0025))

#define        RFM01_CONFIG        0x8000
    #define    RFM01_BANDWIDTH_400KHZ            (0x01<<1)
    #define    RFM01_BANDWIDTH_340KHZ            (0x02<<1)
    #define    RFM01_BANDWIDTH_270KHZ            (0x03<<1)
    #define    RFM01_BANDWIDTH_200KHZ            (0x04<<1)
    #define    RFM01_BANDWIDTH_134KHZ            (0x05<<1)
    #define    RFM01_BANDWIDTH_67KHZ            (0x06<<1)

    #define    RFM01_BAND_315MHZ                (0x00<<11)
    #define    RFM01_BAND_433MHZ                (0x01<<11)
    #define    RFM01_BAND_868MHZ                (0x02<<11)
    #define    RFM01_BAND_915MHZ                (0x03<<11)

    #define    RFM01_CONFIG_DC                    (0x01<<0)
    #define    RFM01_CONFIG_EX                    (0x01<<8)

#define        RFM01_SET_FREQ        0xA000
#define        RFM01_RX_SETTING    0xC000
#define        RFM01_SET_BAUDRATE    0xC800
#define        RFM01_FIFO_MODE        0xCE00
    
#define        RFM01_DATA_FILTER    0xC400
#define        RFM01_AFC_SETTING    0xC600


Код
RFM01_WrCommand(0x0000);
RFM01_WrCommand(RFM01_CONFIG | RFM01_BAND_433MHZ | RFM01_BANDWIDTH_134KHZ | RFM01_CONFIG_EX);
RFM01_WrCommand(RFM01_SET_FREQ | RFM01FREQ(434.00));    // 434
RFM01_WrCommand(RFM01_SET_BAUDRATE | RFM01_BAUD_4800);                        // 4800
RFM01_WrCommand(RFM01_AFC_SETTING | 0x0097);                        // AFC // 0xC69B
RFM01_WrCommand(RFM01_DATA_FILTER | 0x002A);                        // filter
RFM01_WrCommand(0xC240);                        // 2Мгц, просто для контроля
RFM01_WrCommand(RFM01_RX_SETTING | 0x0080);
RFM01_WrCommand(RFM01_FIFO_MODE | 0x0084);                        //  FIFO Off
RFM01_WrCommand(RFM01_FIFO_MODE | 0x0087);                        //  FIFO On

Потом в коде включение приема
Код
    RFM01_WrCommand(RFM01_RX_SETTING | 0x0081);                        //
    RFM01_WrCommand(RFM01_FIFO_MODE | 0x0088);                        //
    RFM01_WrCommand(RFM01_FIFO_MODE | 0x008B);                        //  

    cli();
    MCUCR  &= ~((1<<ISC11)|(1<<ISC10));    // INT1 - low level interrupt
    GICR |= (1<<INT1);                    // INT1 interrupt enable
    GIFR = (1<<INT1);                    // clear interrupt flag INT1
    sei();

nIRQ подключен к INT1 8-ой меги. Тут есть перекрытие инициализации, но это рабочая версия, не законченная и не причесанная. Так что - как есть smile.gif
Go to the top of the page
 
+Quote Post
Mad-man
сообщение Jun 28 2010, 10:38
Сообщение #11


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995



Цитата(Qwertty @ Jun 28 2010, 13:12) *
Не расстраивайтесь раньше времени, сейчас разберемся.



Спасибо, я сегодня ночью копался с RF01 3 раза перепроверил все выходы и входы, спаял второй приемник
на каком-то форуме нашел что нужно ожидать POR около 1-2 сек и задержки перед инициализацией

сделал гиганские задержки начали сыпаться данные в режиме полинга rolleyes.gif НУ ХОТЬ УЖЕ ЧТО-ТО!!

кстати оказалось что купленный пульт KEYFOB на 433 (на базе HCS301) вообще не шлет данных! maniac.gif
я его разобрал и если прижимать пальцем землю и клеммы (к которым нужно резисторы/конденсаторв подпаивать что-ли?? в мануале на него написано что серийный номер - программируется или "подпаивается"? rolleyes.gif )
и одновременно жать кнопку - отправляется данные. короче с пультом разбираться нужно

nIRQ пока не дергается но думаю получится - эта тема уже обсуждалась и здесь и на радиокоте.


Кстати нашел библиотечку для RF01 (FR12b даже есть) может кому будет полезна

http://myfablab.wordpress.com/2010/06/22/r...18-version-0-1/


сейчас данные бьются видимо из-за больших задержек - но все равно я доволен как мытый слон biggrin.gif

Сообщение отредактировал Mad-man - Jun 28 2010, 10:44
Go to the top of the page
 
+Quote Post
ZyBEX
сообщение Jun 29 2010, 22:56
Сообщение #12


Участник
*

Группа: Участник
Сообщений: 54
Регистрация: 5-05-08
Пользователь №: 37 279



Цитата(Mad-man @ Jun 28 2010, 14:38) *
на каком-то форуме нашел что нужно ожидать POR около 1-2 сек и задержки перед инициализацией

Это не только на RFM01/02. Буквально неделю назад точно также обжегся на модулях RFM31/43. По незнанию пренебрег задержками после включения модуля и половина команд инициализации улетало в пустоту.
Go to the top of the page
 
+Quote Post
Mad-man
сообщение Jun 29 2010, 23:09
Сообщение #13


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995



Цитата(ZyBEX @ Jun 30 2010, 02:56) *
Это не только на RFM01/02. Буквально неделю назад точно также обжегся на модулях RFM31/43. По незнанию пренебрег задержками после включения модуля и половина команд инициализации улетало в пустоту.


Да, засада еще та)) Убрал задержки, сделал POR 500ms, включил прерывания, пока дышит)

Ща только перешил eeprom на брелке с hcs301 (прошился 4в VCC хотя в даташите говорят VCC должно быть 5в +- 10%), завтра буду вечером пробовать их подружить...массив с верификацией сошелся с записываемым rolleyes.gif вроде массив обнулил перед верификацией laughing.gif что-то отдельно вычитать eeprom c hcs301 не выходит...может это для защиты сделано.

смущает только что брелок (hcs301) кажется работает на 5кбод, а баудрейт, который можно выставить на RF01
4,8кбод
RFXX_WRT_CMD(0xC800 | 0b10010000); // BR = 10000000/ ((8+1)*29*(1+cs*7)) = 4,789 kbps

или 5,3кбод
RFXX_WRT_CMD(0xC800 | 0b10010000); // BR = 10000000/ ((9+1)*29*(1+cs*7)) = 5,3ххх kbps

cranky.gif

Сообщение отредактировал Mad-man - Jun 29 2010, 23:16
Go to the top of the page
 
+Quote Post
Qwertty
сообщение Jun 30 2010, 10:33
Сообщение #14


Местный
***

Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527



Цитата(Mad-man @ Jun 30 2010, 03:09) *
Да, засада еще та)) Убрал задержки, сделал POR 500ms, включил прерывания, пока дышит)

У меня 100мС и все работает стабильно. Причем задержку специально не делал, просто индикатор инициализируется первым, вот на время его инициализации задержка и получилась.
Цитата(Mad-man @ Jun 30 2010, 03:09) *
Ща только перешил eeprom на брелке с hcs301 (прошился 4в VCC хотя в даташите говорят VCC должно быть 5в +- 10%), завтра буду вечером пробовать их подружить...

А зачем hcs301? Они с RFM01/RFM02 дружить не будут, так как рассчитаны на амплитудную модуляцию. Да и кодируют посылку не битовым потоком, а импульсами разной ширины. Если в системе есть микроконтроллер, а для инициализации RFM он все равно нужен, то Keeloq можно прямо в нем закодировать, hcs301 это пятое колесо к телеге. Или задача принимать на RFM01 сигнал от брелка с hcs301? Тогда ничего не получится, амплитудная модуляция с частотной не дружат. А в брелке именно амплитудная.
Go to the top of the page
 
+Quote Post
Mad-man
сообщение Jun 30 2010, 11:45
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995



Цитата(Qwertty @ Jun 30 2010, 14:33) *
У меня 100мС и все работает стабильно. Причем задержку специально не делал, просто индикатор инициализируется первым, вот на время его инициализации задержка и получилась.

А зачем hcs301? Они с RFM01/RFM02 дружить не будут, так как рассчитаны на амплитудную модуляцию. Да и кодируют посылку не битовым потоком, а импульсами разной ширины. Если в системе есть микроконтроллер, а для инициализации RFM он все равно нужен, то Keeloq можно прямо в нем закодировать, hcs301 это пятое колесо к телеге. Или задача принимать на RFM01 сигнал от брелка с hcs301? Тогда ничего не получится, амплитудная модуляция с частотной не дружат. А в брелке именно амплитудная.


брелок мне нужен не для контроллера. брелок сам по себе
я хочу принимать от него посылку на RF01 и по этой посылке включать/отключать реле
kelog по сути тоже не нужен - из его пакета мне хватит фиксированной части (где серийный номер)
просто брелков со статическим кодом не удалось купить

а какие брелки можно подружить с RF01?


вот этот подойдет?

http://www.aktivsb.ru/prod-2456.html

Сообщение отредактировал Mad-man - Jun 30 2010, 12:08
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 13:22
Рейтинг@Mail.ru


Страница сгенерированна за 0.01538 секунд с 7
ELECTRONIX ©2004-2016