Other Parts Discussed in Thread: TEST2
Tool/software:
I have a system where we want to use a carrier sense WOR to wake up a system via GDO2
to save the limited battery power, the system itself is all asleep as best it can when it is not awake doing its job, which is very infrequent so the thing as a whole is essentially always asleep and we can get around 100uA system current at that point
I have managed to do a WOR configuration which will wake up using a packet broadcast from the remote end, but it had quite the stay on until packet received config so the power consumption is rubbish but I know it can work
I am now trying to do a WOR based on the carrier sense alone but with much longer timer values ie a 1Hz wake up where by I then put the remote end into a continuous tx mode to just blat RF into the environment for a couple of seconds such that the RSSI would then jump up and it would catch the power on 1 of the 1 second wakeup ticks. after that it can then go into a proper rx mode to do the real data exchange. there is no way to keep the 2 ends in time sync otherwise to try and lock the waking up window
using a TI dev kit in continuous RX mode independently, i can see that my remote TX end is doing what it should as its RSSI is jumping up from the -110ish noise floor up to > -50dBm at least according to its chart
I have been through the GDO2, AGC and modem registers to try and get GDO2 to go active when i start the broadcast but seem at best to just end up with it bouncing on and off when the WOR timer period is happening
am I barking up the wrong tree here with this sort of approach ? or am i missing something obvious on what to present on GDO2 ( and the handling there of ) ?
// CC1101_Write (CC1101_IOCFG2, 0x24); // evt 0
// CC1101_Write (CC1101_IOCFG2, 0x25); // evt 1
// CC1101_Write (CC1101_IOCFG2, 0x14); // RSSI > threshold
// CC1101_Write (CC1101_IOCFG2, 0x07); // rx'd
CC1101_Write (CC1101_IOCFG2, 0x08); // Preamble Quality Reached.
CC1101_Write (CC1101_WORCTRL, 0x38 );
CC1101_Write (CC1101_PKTSTATUS, 6);
// CC1101_Write (CC1101_AGCCTRL2, 0x40); // MAGN = 24dB target
CC1101_Write (CC1101_AGCCTRL2, 0x43); // MAGN = 33dB target
CC1101_Write (CC1101_AGCCTRL1, 0x40); // carrier
CC1101_Write (CC1101_AGCCTRL1, 0x40 | 0x30 | 0x07 ); // carrier + 7
CC1101_Write (CC1101_MDMCFG2, 0x13); // GFSK 30/32 sync words
// CC1101_Write (CC1101_MDMCFG2, 0x14); // GFSK No preamble/sync, carrier-sense above threshold
// CC1101_Write (CC1101_MDMCFG2, 0x10); // no preamble
// CC1101_Write(CC1101_WOREVT1, 0x28 ); // should be 0.3 second with worctrl.event1=7
// CC1101_Write(CC1101_WOREVT0, 0xa0 );
CC1101_Write(CC1101_WOREVT1, 0x87 ); // should be 1 second with worctrl.event1=7
CC1101_Write(CC1101_WOREVT0, 0x76 );
CC1101_Write(CC1101_WORCTRL, 0x78);
CC1101_Write (CC1101_MCSM2, 0x0);