|
RFM01-RFM02 от Hope Microelectronics Есть несколько вопросов..., Кто нибудь включал? |
|
|
2 страниц
1 2 >
|
 |
Ответов
(1 - 22)
|
Mar 5 2009, 21:54
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(Григорий2000 @ Feb 24 2009, 14:36)  Вопрос снят)) Дело было не в бобине... А в чем было дело? Мне запустить так и не удалось. Передатчик вроде работает, но не так как хотелось бы - никак не усыпить его полностью. Если остановить кварцевый генератор, то модуль засыпает навсегда.  А приемник вообще не реагирует на передачу. Как раз нет прерывания по заполнению FIFO. А может и совсем не работает. Примеры какие то кривые. Повторять один в один их не хочется - постоянный поллинг сводит полезность FIFO к 0. А прерывания нет. Я уж решил что приемник умер в результате экспериментов, но сегодня заменил с тем же результатом. Все что удается добиться - изменить частоту такта. У Вас работает именно с той инициализацией, что Вы в первом посте привели? Пошел к производителю, скачал RF01 programming guide. Чудеса, он уже другой. nIRQ теперь вообще не используется. А я с него прерывание жду. И зачем он тогда вообще? Сейчас попробую переделаться в соответствии с новой политикой партии. Эх, китайцы....
|
|
|
|
|
Mar 5 2009, 22:03
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 26 2010, 17:13
|
Частый гость
 
Группа: Участник
Сообщений: 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) Если пробовать читать фифо в цикле - там всегда все по нулям. помогите Антенка керамическая 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
|
|
|
|
|
Jun 28 2010, 09:12
|
Местный
  
Группа: Свой
Сообщений: 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-ой меги. Тут есть перекрытие инициализации, но это рабочая версия, не законченная и не причесанная. Так что - как есть
|
|
|
|
|
Jun 28 2010, 10:38
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995

|
Цитата(Qwertty @ Jun 28 2010, 13:12)  Не расстраивайтесь раньше времени, сейчас разберемся. Спасибо, я сегодня ночью копался с RF01 3 раза перепроверил все выходы и входы, спаял второй приемник на каком-то форуме нашел что нужно ожидать POR около 1-2 сек и задержки перед инициализацией сделал гиганские задержки начали сыпаться данные в режиме полинга  НУ ХОТЬ УЖЕ ЧТО-ТО!! кстати оказалось что купленный пульт KEYFOB на 433 (на базе HCS301) вообще не шлет данных! я его разобрал и если прижимать пальцем землю и клеммы (к которым нужно резисторы/конденсаторв подпаивать что-ли?? в мануале на него написано что серийный номер - программируется или "подпаивается"?  ) и одновременно жать кнопку - отправляется данные. короче с пультом разбираться нужно nIRQ пока не дергается но думаю получится - эта тема уже обсуждалась и здесь и на радиокоте. Кстати нашел библиотечку для RF01 (FR12b даже есть) может кому будет полезна http://myfablab.wordpress.com/2010/06/22/r...18-version-0-1/сейчас данные бьются видимо из-за больших задержек - но все равно я доволен как мытый слон
Сообщение отредактировал Mad-man - Jun 28 2010, 10:44
|
|
|
|
|
Jun 29 2010, 22:56
|
Участник

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

|
Цитата(Mad-man @ Jun 28 2010, 14:38)  на каком-то форуме нашел что нужно ожидать POR около 1-2 сек и задержки перед инициализацией Это не только на RFM01/02. Буквально неделю назад точно также обжегся на модулях RFM31/43. По незнанию пренебрег задержками после включения модуля и половина команд инициализации улетало в пустоту.
|
|
|
|
|
Jun 29 2010, 23:09
|
Частый гость
 
Группа: Участник
Сообщений: 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%), завтра буду вечером пробовать их подружить...массив с верификацией сошелся с записываемым  вроде массив обнулил перед верификацией  что-то отдельно вычитать 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
Сообщение отредактировал Mad-man - Jun 29 2010, 23:16
|
|
|
|
|
Jun 30 2010, 10:33
|
Местный
  
Группа: Свой
Сообщений: 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? Тогда ничего не получится, амплитудная модуляция с частотной не дружат. А в брелке именно амплитудная.
|
|
|
|
|
Jun 30 2010, 11:45
|
Частый гость
 
Группа: Участник
Сообщений: 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
|
|
|
|
|
Jun 30 2010, 12:37
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(Mad-man @ Jun 30 2010, 15:45)  я хочу принимать от него посылку на RF01 и по этой посылке включать/отключать реле Тогда Вам нужен другой приемник. Сверхрегенератор - по типу как в старых автосигнализациях. Цитата(Mad-man @ Jun 30 2010, 15:45)  а какие брелки можно подружить с RF01? вот этот подойдет? Скорее всего никакие. Обычно брелок стараются сделать дешевле в ущерб качеству. В таких брелках передатчик - всего один транзистор и хорошо если частота стабилизирована резонатором на ПАВ. Часто вообще LC контур. Ну и модуляция сделана амплитудная 100% - либо излучает либо нет. RFM01 куда более качественная система и возможностей у нее намного больше. Но Вам это все не надо - берите что то типа RR8-433 - http://www.terraelectronica.ru/pdf/TELC/RR8-433.pdf или http://www.terraelectronica.ru/pdf/TELC/RR3-433.pdfОни смогут работать с брелком на hcs301 и программировать их не нужно. Там из интерфейса один выход.  Можете вообще самостоятельно приемник собрать - http://vrtp.ru/index.php?act=categories&am...mp;article=1129или - http://vrtp.ru/index.php?act=categories&am...mp;article=1418 , но надо немного перестроить по частоте.
|
|
|
|
|
Jun 30 2010, 13:51
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995

|
Цитата(Qwertty @ Jun 30 2010, 16:37)  Тогда Вам нужен другой приемник. Сверхрегенератор - по типу как в старых автосигнализациях. Скорее всего никакие. Обычно брелок стараются сделать дешевле в ущерб качеству. В таких брелках передатчик - всего один транзистор и хорошо если частота стабилизирована резонатором на ПАВ. Часто вообще LC контур. Ну и модуляция сделана амплитудная 100% - либо излучает либо нет. RFM01 куда более качественная система и возможностей у нее намного больше. Но Вам это все не надо - берите что то типа RR8-433 - http://www.terraelectronica.ru/pdf/TELC/RR8-433.pdf или http://www.terraelectronica.ru/pdf/TELC/RR3-433.pdfОни смогут работать с брелком на hcs301 и программировать их не нужно. Там из интерфейса один выход.  Можете вообще самостоятельно приемник собрать - http://vrtp.ru/index.php?act=categories&am...mp;article=1129или - http://vrtp.ru/index.php?act=categories&am...mp;article=1418 , но надо немного перестроить по частоте. Вы меня расстроили ((( чипы с одним выходом не подходят  поллить выходы это кощунственно нашел чип GD-RXV6D, заказал теперь буду пробовать его http://www.tgdd-gd.com/showproduct.asp?id=93выход 4 бита - в даташите ни слова про них - китайцы совсем офигели
Сообщение отредактировал Mad-man - Jun 30 2010, 14:03
|
|
|
|
|
Jun 30 2010, 15:35
|
Местный
  
Группа: Свой
Сообщений: 408
Регистрация: 21-10-06
Из: Санкт-Петербург
Пользователь №: 21 527

|
Цитата(Mad-man @ Jun 30 2010, 17:51)  чипы с одним выходом не подходят  поллить выходы это кощунственно Зачем? Подключите на прерывание и ресурсов много не уйдет. Уж очень низкая скорость. Цитата(Mad-man @ Jun 30 2010, 17:51)  нашел чип GD-RXV6D, заказал теперь буду пробовать его выход 4 бита - в даташите ни слова про них - китайцы совсем офигели Этот уже с амплитудной модуляцией. Да еще похоже там килог уже внутри, а D0-D3 это выходы кнопок. Только как туда мануфактурный ключ прописать непонятно.
|
|
|
|
|
Jun 30 2010, 16:23
|
Участник

Группа: Участник
Сообщений: 71
Регистрация: 3-04-10
Из: Прибалтика
Пользователь №: 56 395

|
Тогда может передатчик тоже самому сделать ? Сразу много плюсов. Например, вот эту вещь можно и в корпус от брелока впихнуть, а возможностей уйма: http://ru.farnell.com/quasar/qfm-trx1-24g/...r-fm/dp/1517428Брелок правда получится немаленький. А вот этот вообще микроскопический (7х5 мм) :http://ru.farnell.com/quasar/qam-tx3/module-transmitter-am-433mhz/dp/1304025
|
|
|
|
|
Jun 30 2010, 16:56
|
Частый гость
 
Группа: Участник
Сообщений: 91
Регистрация: 5-11-06
Пользователь №: 21 995

|
Цитата(Олежик @ Jun 30 2010, 20:23)  Тогда может передатчик тоже самому сделать ? Сразу много плюсов. Например, вот эту вещь можно и в корпус от брелока впихнуть, а возможностей уйма: http://ru.farnell.com/quasar/qfm-trx1-24g/...r-fm/dp/1517428Брелок правда получится немаленький. А вот этот вообще микроскопический (7х5 мм) :http://ru.farnell.com/quasar/qam-tx3/module-transmitter-am-433mhz/dp/1304025 ну это как-то по бомжовски вот был бы он в корпусе Кверти сказал что брелков, совместимых с RF01 нет в природе ну есть - пульты от всяких Шерханов и MS (у них FSK) - но очень дорого (((
Сообщение отредактировал Mad-man - Jun 30 2010, 17:08
|
|
|
|
|
Jul 2 2011, 06:19
|
Местный
  
Группа: Участник
Сообщений: 235
Регистрация: 20-11-10
Пользователь №: 61 032

|
Из восьми приёмников RFM01 один "плохо ловит", остальные семь в комнатных условиях без замечаний (в условиях outdoor пока не очень понял). CODE Инициализация (про power-on delay не забыли):
0x0000 ; чтение статуса = сброс флагов 0xC080 ; выкл. приёмник (на всякий случай?) 0xDA01 ; выкл. the highly sensitive RESET mode 0xCC00 ; disable low duty cycle 0xE000 ; wake-up timer period = 0 (не используем, но пусть будет) 0xC2E0 ; 10 МГц clock наружу 0x898A ; 433, выкл LBD и wakeup timer, crystal load capacitance = ... (???), bw = 134 kHz, не запрещаем clock наружу 0xA640 ; center frequency = ... 0xC847 ; data rate = 4789 bit/sec 0xC6C3 ; AFC (???) 0xC4EC ; data filter (???) 0xCE84 ; выкл. FIFO 0xCE87 ; вкл. FIFO, старт по sync word 0xC041 ; 0 dB gain, enable receiver and crystal osc
Приём (по прерыванию от ноги nIRQ):
читаем первые 8 бит статуса читаем вторые 8 бит статуса читаем третьи 8 бит статуса = принятый байт
ложим принятый байт в буфер прибавляем счётчик, который номер ячейки в буфере = номер байта в пакете
если это был конец пакета: очищаем внутренний буфер приёмника командой 0xCE84, приёмник начинает ждать следующего sync word после команды 0xCE87 Или с лыжами - или... ... получилось бы весело, когда случайно выбрать для отладки из общей кучи модуль именно тот, который "плохо ловит"? Как бы опыт для будущих. (для научного любопытства и эксперимента придумал в "плохо ловящем" модуле заменить кварц на с другого, совсем дохлого его, у которого нога выжжена то ли не помню. лень. когда-нибудь.) --- И/или вопрос: обычна ли ситуация "не напрягай мозг об ровное место, тупо замени сабж бракованный от рождения либо испорченный в процессе"?
|
|
|
|
|
Nov 29 2012, 11:40
|
Группа: Участник
Сообщений: 10
Регистрация: 16-08-10
Из: Санкт-Петербург
Пользователь №: 58 931

|
Добрый день! Вот уже неделю пытаюсь соединить между собой RFM12B-433S1. Код передалал из Меги8 на PIC16F873 и PIC16F887, то что под рукой есть. Запускаю передатчик, в COM- порт в цикле выдает "sende..." светодиод мерцает, ток потребления всей штуковины прыгает до 60мА при 5В. Все линии SPI шевелятся. Запускаю приемник, SPI виснет. Один раз моргает светодиод, в СОМ-порту тишина. Оба проекта прилагаю в архивчиках. Помогите разобраться, ткните пальцем, все ж я больше железячник нежели программер...
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|