Здравствуйте. У меня следующая прорблема: есть два девайса, на обоих стоят СС1100, один другому раз в 10 секунд шлет пакет, на что другой девайс также отвечает пакетом....Все вроде пашет отлично, но внезапно пакеты запроса перестают доходить. я выяснил что происходит переполнение RXFIFO. GDO2 на обоих девайсах используется для установления факта приема пакета(прерывание) и установлено на 07, тоесть установка 1 при приеме пакета с CRC OK.
На приемной стороне :
// External Interrupt 1 service routine прием пакета interrupt [EXT_INT1] void ext_int1_isr(void) { length=sizeof(rxbuffer); RF_ReceivePacket_int(rxbuffer,&length);
payload[0]=8; payload[1]=1; payload[2]=FRAM[0+i*7]; payload[3]=FRAM[1+i*7]; payload[4]=FRAM[2+i*7]; payload[5]=FRAM[3+i*7]; payload[6]=FRAM[4+i*7]; payload[7]=FRAM[5+i*7]; payload[8]=FRAM[6+i*7]; RF_SendPacket(payload,9);
RF_Strobe(CC1100_SRX);
} unsigned char RF_ReceivePacket_int(unsigned char *rxBuffer,unsigned char *length) { unsigned char status[2]; unsigned char packetLength;
packetLength = RF_ReadReg(CC1100_FIFO); RF_ReadBurstReg(CC1100_FIFO, rxBuffer, packetLength); *length = packetLength; RF_ReadBurstReg(CC1100_FIFO, status, 2); RF_Strobe(CC1100_SIDLE); RF_Strobe(CC1100_SFRX); return (status[LQI] & CRC_OK); }
не понятно почему забивает RXFIFO...Пакет приходит длиной 12 байт, и он сразуже считывается, очищая фифо.....и тут бац может кто поможет? Я ставил таймер на переодическое очищение фифо, тогда работает, но это не решение, так как в неподходящий момент может убить всю инфу))
вот инициализация начальная
//íàñòðîéêà CC1100 settings.FSCTRL1 =0x0D; // FSCTRL1 Frequency synthesizer control. settings.FSCTRL0 =0x00; // FSCTRL0 Frequency synthesizer control. settings.FREQ2 =0x10; // FREQ2 Frequency control word; high byte. settings.FREQ1 =0xA7; // FREQ1 Frequency control word; middle byte. settings.FREQ0 =0x62; // FREQ0 Frequency control word; low byte. settings.MDMCFG4 =0x0E; // MDMCFG4 Modem configuration. settings.MDMCFG3 =0x3B; // MDMCFG3 Modem configuration. settings.MDMCFG2 =0x73; // MDMCFG2 Modem configuration. settings.MDMCFG1 =0x42; // DMCFG1 Modem configuration. settings.MDMCFG0 =0xF8; // MDMCFG0 Modem configuration. settings.CHANNR =0x00; // CHANNR Channel number. settings.DEVIATN =0x00; // DEVIATN Modem deviation setting (when FSK modulation is enabled). settings.FREND1 =0xB6; // FREND1 Front end RX configuration. settings.FREND0 =0x10; // FREND0 Front end TX configuration. settings.MCSM0 =0x18; // MCSM0 Main Radio Control State Machine configuration. settings.FOCCFG =0x1D; // FOCCFG Frequency Offset Compensation Configuration. settings.BSCFG =0x1C; // BSCFG Bit synchronization Configuration. settings.AGCCTRL2 =0xC7; // AGCCTRL2 AGC control. settings.AGCCTRL1 =0x00; // AGCCTRL1 AGC control. settings.AGCCTRL0 =0xB0; // AGCCTRL0 AGC control. settings.FSCAL3 =0xEA; // FSCAL3 Frequency synthesizer calibration. settings.FSCAL2 =0x2A; // FSCAL2 Frequency synthesizer calibration. settings.FSCAL1 =0x00; // FSCAL1 Frequency synthesizer calibration. settings.FSCAL0 =0x1F; // FSCAL0 Frequency synthesizer calibration. settings.FSTEST =0x59; // FSTEST Frequency synthesizer calibration. settings.TEST2 =0x88; // TEST2 Various test settings. settings.TEST1 =0x31; // TEST1 Various test settings. settings.TEST0 =0x09; // TEST0 Various test settings. settings.FIFOTHR =0x07; // FIFOTHR RXFIFO and TXFIFO thresholds. settings.IOCFG2 =0x47; // IOCFG2 GDO2 output pin configuration. settings.IOCFG0 =0x06; // IOCFG0D GDO0 output pin configuration. Refer to SmartRF® Studio User Manual for detailed pseudo register explanation. settings.PKTCTRL1 =0x0F; // PKTCTRL1 Packet automation control. settings.PKTCTRL0 =0x05; // PKTCTRL0 Packet automation control. settings.ADDR =0x02; // ADDR Device address. settings.PKTLEN =0xFF; // PKTLEN Packet length.
RF_powerup_reset(); RF_WriteRfSettings(&settings); RF_WriteReg(CC1100_MCSM1, 0x3C); RF_WriteBurstReg(CC1100_PATABLE, paTable, 8);
RF_Strobe(CC1100_SIDLE); RF_Strobe(CC1100_SFRX); RF_Strobe(CC1100_SFTX); RF_Strobe(CC1100_SRX);
Сообщение отредактировал yahoo - Nov 29 2009, 18:23
|