From bc0665b018cd5a90d707422c3f1f4b13772dec9b Mon Sep 17 00:00:00 2001 From: Mark Bergsma Date: Sat, 11 Jun 2016 11:10:46 +0200 Subject: [PATCH] Declare RFM69 interrupt with SPI.usingInterrupt() This interrupt is then masked during SPI transactions of other code/libraries that use SPI transactions, to prevent the RFM69 interrupt handler (which does SPI transfers) preempting other SPI transfers. --- RFM69.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/RFM69.cpp b/RFM69.cpp index a1e1eeb..e5b1d72 100644 --- a/RFM69.cpp +++ b/RFM69.cpp @@ -91,6 +91,9 @@ bool RFM69::initialize(uint8_t freqBand, uint8_t nodeID, uint8_t networkID) digitalWrite(_slaveSelectPin, HIGH); pinMode(_slaveSelectPin, OUTPUT); SPI.begin(); +#ifdef SPI_HAS_TRANSACTION + SPI.usingInterrupt(_interruptNum); +#endif unsigned long start = millis(); uint8_t timeout = 50; do writeReg(REG_SYNCVALUE1, 0xAA); while (readReg(REG_SYNCVALUE1) != 0xaa && millis()-start < timeout);