Fix MY_RF69_IRQ_NUM pin setting for ESP8266
Add delay when initializing radio and do some yielding
This commit is contained in:
@@ -347,8 +347,12 @@
|
|||||||
#define MY_RF69_SPI_CS RF69_SPI_CS
|
#define MY_RF69_SPI_CS RF69_SPI_CS
|
||||||
#endif
|
#endif
|
||||||
#ifndef MY_RF69_IRQ_NUM
|
#ifndef MY_RF69_IRQ_NUM
|
||||||
|
#if defined(ARDUINO_ARCH_ESP8266)
|
||||||
|
#define MY_RF69_IRQ_NUM MY_RF69_IRQ_PIN
|
||||||
|
#else
|
||||||
#define MY_RF69_IRQ_NUM RF69_IRQ_NUM
|
#define MY_RF69_IRQ_NUM RF69_IRQ_NUM
|
||||||
#endif
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
// Enable this for encryption of packets
|
// Enable this for encryption of packets
|
||||||
//#define MY_RFM69_ENABLE_ENCRYPTION
|
//#define MY_RFM69_ENABLE_ENCRYPTION
|
||||||
|
|||||||
@@ -44,8 +44,8 @@ volatile byte RFM69::ACK_RECEIVED; /// Should be polled immediately after sendin
|
|||||||
volatile int RFM69::RSSI; //most accurate RSSI during reception (closest to the reception)
|
volatile int RFM69::RSSI; //most accurate RSSI during reception (closest to the reception)
|
||||||
RFM69* RFM69::selfPointer;
|
RFM69* RFM69::selfPointer;
|
||||||
|
|
||||||
// Set time out to 50ms
|
// Set time out to 100ms
|
||||||
#define TIME_OUT 50
|
#define TIME_OUT 100
|
||||||
|
|
||||||
|
|
||||||
bool RFM69::initialize(byte freqBand, byte nodeID, byte networkID)
|
bool RFM69::initialize(byte freqBand, byte nodeID, byte networkID)
|
||||||
@@ -97,11 +97,19 @@ bool RFM69::initialize(byte freqBand, byte nodeID, byte networkID)
|
|||||||
|
|
||||||
|
|
||||||
start_to = millis();
|
start_to = millis();
|
||||||
do writeReg(REG_SYNCVALUE1, 0xaa); while (readReg(REG_SYNCVALUE1) != 0xaa && millis()-start_to < TIME_OUT);
|
do {
|
||||||
|
writeReg(REG_SYNCVALUE1, 0xaa);
|
||||||
|
yield();
|
||||||
|
} while (readReg(REG_SYNCVALUE1) != 0xaa && millis()-start_to < TIME_OUT);
|
||||||
|
|
||||||
if (millis()-start_to >= TIME_OUT) return (false);
|
if (millis()-start_to >= TIME_OUT) return (false);
|
||||||
|
|
||||||
start_to = millis() ;
|
start_to = millis() ;
|
||||||
do writeReg(REG_SYNCVALUE1, 0x55); while (readReg(REG_SYNCVALUE1) != 0x55 && millis()-start_to < TIME_OUT);
|
do {
|
||||||
|
writeReg(REG_SYNCVALUE1, 0x55);
|
||||||
|
yield();
|
||||||
|
} while (readReg(REG_SYNCVALUE1) != 0x55 && millis()-start_to < TIME_OUT);
|
||||||
|
|
||||||
if (millis()-start_to >= TIME_OUT) return (false);
|
if (millis()-start_to >= TIME_OUT) return (false);
|
||||||
|
|
||||||
for (byte i = 0; CONFIG[i][0] != 255; i++)
|
for (byte i = 0; CONFIG[i][0] != 255; i++)
|
||||||
@@ -116,7 +124,9 @@ bool RFM69::initialize(byte freqBand, byte nodeID, byte networkID)
|
|||||||
|
|
||||||
|
|
||||||
start_to = millis() ;
|
start_to = millis() ;
|
||||||
while (((readReg(REG_IRQFLAGS1) & RF_IRQFLAGS1_MODEREADY) == 0x00) && millis()-start_to < TIME_OUT); // Wait for ModeReady
|
while (((readReg(REG_IRQFLAGS1) & RF_IRQFLAGS1_MODEREADY) == 0x00) && millis()-start_to < TIME_OUT) {
|
||||||
|
yield();
|
||||||
|
} // Wait for ModeReady
|
||||||
if (millis()-start_to >= TIME_OUT) return (false);
|
if (millis()-start_to >= TIME_OUT) return (false);
|
||||||
|
|
||||||
attachInterrupt(_interruptNum, RFM69::isr0, RISING);
|
attachInterrupt(_interruptNum, RFM69::isr0, RISING);
|
||||||
|
|||||||
Reference in New Issue
Block a user