Witam
Od dawna chodził mi po głowie projekt bezprzewodowego wysyłania danych.
Po ładnych kilku latach zacząłem spełniać swoje marzenie
Zaprzągłem do tego M8 i RFM22B całość ma chodzić na bateryjce, i wysyłać dane np co 2s.
Skorzystałem z dobrodziejstwa internetu i znalazłem gotowe biblioteki do obsługi RFM.
Procesor jaki i moduł jest usypiany i wybudzany tylko na czas wysłania informacji.
Po po podłączeniu oscyloskopu zobaczyłem że cały procedura wysłania jednego bajtu
danych trwa blisko 90ms za dużo jak dla mnie.
Próbuję się przebić przez note aplikacyjna modułu ale nie ukrywam że bariera jest język (korzystam z translatora i jakoś to idzie no ale...) i mała znajomość transmisji radiowej.
Umieszczę kod incjalizujący moduł bo podejrzewam że tutaj jest pies pogrzebany.
Jeśli któryś z kolegów chciałby sie podzielić widzą jak powinno się to dziadostwo skonfigurować było by super.
Od dawna chodził mi po głowie projekt bezprzewodowego wysyłania danych.
Po ładnych kilku latach zacząłem spełniać swoje marzenie
Zaprzągłem do tego M8 i RFM22B całość ma chodzić na bateryjce, i wysyłać dane np co 2s.
Skorzystałem z dobrodziejstwa internetu i znalazłem gotowe biblioteki do obsługi RFM.
Procesor jaki i moduł jest usypiany i wybudzany tylko na czas wysłania informacji.
Po po podłączeniu oscyloskopu zobaczyłem że cały procedura wysłania jednego bajtu
danych trwa blisko 90ms za dużo jak dla mnie.
Próbuję się przebić przez note aplikacyjna modułu ale nie ukrywam że bariera jest język (korzystam z translatora i jakoś to idzie no ale...) i mała znajomość transmisji radiowej.
Umieszczę kod incjalizujący moduł bo podejrzewam że tutaj jest pies pogrzebany.
Jeśli któryś z kolegów chciałby sie podzielić widzą jak powinno się to dziadostwo skonfigurować było by super.
void rf22_init(void)
{
rf22_write(0x07, 0x80); // software reset
_delay_us(500);
rf22_write(0x05, 0x02); // valid packed received interrupt on
rf22_write(0x06, 0x00); // all interrupts off
rf22_write(0x07, 0x01); // operating mode: ready mode
rf22_write(0x09, 0x7f); // xtal load capacitance
rf22_write(0x0A, 0x02); // uC CLK: 10MHz
rf22_write(0x0b, 0xf2); // GPIO0: TX_ANT - f2
rf22_write(0x0c, 0xf5); // GPIO1: RX ANT - f5
rf22_write(0x0d, 0x00); // GPIO2: uC Clock out
rf22_write(0x0e, 0x00);
rf22_write(0x0f, 0x70); // ADC Input: GND
rf22_write(0x10, 0x00); // ADC offset: 0
rf22_write(0x12, 0x00); // temp sensor calibration off
rf22_write(0x13, 0x00); // temp sensor offset: 0
rf22_write(0x1d, 0x40); // enable AFC
rf22_write(0x1e, 0x0A); // afc timing
rf22_write(0x1f, 0x03); // afc timing
rf22_write(0x1C, 0x05); // IF bandwidth
rf22_write(0x20, 0x83); // Clock Recovery Oversampling Rate
rf22_write(0x21, 0xC0); // Clock Recovery Offset 2
rf22_write(0x22, 0x13); // Clock Recovery Offset 1
rf22_write(0x23, 0xA9); // Clock Recovery Offset 0
rf22_write(0x24, 0x00); // Clock Recovery Timing Loop Gain 1
rf22_write(0x25, 0x04); // Clock Recovery Timing Loop Gain 0
rf22_write(0x2A, 0x24);
rf22_write(0x27, 0x10); // RSSI Threashold: -120dB
rf22_write(0x30, 0x8c); // data access: RX/TX packet handling, enable crc: CCIT
rf22_write(0x32, 0xff); // header check enable
rf22_write(0x33, 0x42); // 2 word synchronisation
rf22_write(0x34, 0x10); // preamble length: 16 nibbles, = 64bits
rf22_write(0x35, 0x30); // preamble detection control: 6 nibbles = 24bits
rf22_write(0x36, 0x2d); // sync word 3
rf22_write(0x37, 0xd4); // sync word 2
rf22_write(0x38, 0xAA); // sync word 1
rf22_write(0x39, 0xAA); // sync word 0
rf22_write(0x3a, 'h'); // transmit header 3
rf22_write(0x3b, 'o'); // transmit header 2
rf22_write(0x3c, 'p'); // transmit header 1
rf22_write(0x3d, 'e'); // transmit header 0
rf22_write(0x3e, 17); // packet length
rf22_write(0x3f, 'h'); // check header 3
rf22_write(0x40, 'o'); // check header 2
rf22_write(0x41, 'p'); // check header 1
rf22_write(0x42, 'e'); // check header 0
rf22_write(0x43, 0xff); // header enable mask 3
rf22_write(0x44, 0xff); // header enable mask 2
rf22_write(0x45, 0xff); // header enable mask 1
rf22_write(0x46, 0xff); // header enable mask 0
rf22_write(0x69, 0x60); // AGC on
rf22_write(0x6a, 0x0b); // agc override 2
//rf22_write(0x6d, 0x0F); // tx power: +17dBm
rf22_write(0x6d, 0x08);
rf22_write(0x6E,0x13); // set baud high
rf22_write(0x6F,0xa9); // set baud low
rf22_write(0x70, 0x2C); // modulation control
rf22_write(0x71, 0x22); // modulation control 2: FIFO mode, OOK //0x21 / 0x00
rf22_write(0x72, 0x50); // frequency deviation: 45kHz
rf22_write(0x73, 0x00); // offset: 0
rf22_write(0x74, 0x00); // offset: 0
rf22_write(0x79, 0x0); // frequency hopping off
rf22_write(0x7a, 0x0); // frequency hopping off
#ifdef BAND_868
rf22_write(0x75, 0x73); // 860-880MHz range
#else
rf22_write(0x75, 0x53); // 430-440MHz range
#endif
}