From a82002b56e332212262f4dfb211da6a3acc967e4 Mon Sep 17 00:00:00 2001 From: Andrea Guglielmini Date: Mon, 25 Nov 2019 16:11:55 +0100 Subject: [PATCH] [nRF24] 2 bytes addrWidth --- src/modules/nRF24/nRF24.cpp | 7 ++++++- src/modules/nRF24/nRF24.h | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/modules/nRF24/nRF24.cpp b/src/modules/nRF24/nRF24.cpp index dc9895a9..7dd2d5c9c 100644 --- a/src/modules/nRF24/nRF24.cpp +++ b/src/modules/nRF24/nRF24.cpp @@ -19,7 +19,7 @@ int16_t nRF24::begin(int16_t freq, int16_t dataRate, int8_t power, uint8_t addrW // check SPI connection int16_t val = _mod->SPIgetRegValue(NRF24_REG_SETUP_AW); - if(!((val >= 1) && (val <= 3))) { + if(!((val >= 0) && (val <= 3))) { RADIOLIB_DEBUG_PRINTLN(F("No nRF24 found!")); _mod->term(); return(ERR_CHIP_NOT_FOUND); @@ -339,6 +339,11 @@ int16_t nRF24::setAddressWidth(uint8_t addrWidth) { // set address width switch(addrWidth) { + case 2: + // Even if marked as 'Illegal' on the datasheet this will work: + // http://travisgoodspeed.blogspot.com/2011/02/promiscuity-is-nrf24l01s-duty.html + state = _mod->SPIsetRegValue(NRF24_REG_SETUP_AW, NRF24_ADDRESS_2_BYTES, 1, 0); + break; case 3: state = _mod->SPIsetRegValue(NRF24_REG_SETUP_AW, NRF24_ADDRESS_3_BYTES, 1, 0); break; diff --git a/src/modules/nRF24/nRF24.h b/src/modules/nRF24/nRF24.h index a1cfec7b..5fe2e9c8 100644 --- a/src/modules/nRF24/nRF24.h +++ b/src/modules/nRF24/nRF24.h @@ -99,7 +99,8 @@ #define NRF24_P0_ON 0b00000001 // 0 0 enabled (default) // NRF24_REG_SETUP_AW -#define NRF24_ADDRESS_3_BYTES 0b00000001 // 1 0 address width: 3 bytes +#define NRF24_ADDRESS_2_BYTES 0b00000000 // 1 0 address width: 2 bytes +#define NRF24_ADDRESS_3_BYTES 0b00000001 // 1 0 3 bytes #define NRF24_ADDRESS_4_BYTES 0b00000010 // 1 0 4 bytes #define NRF24_ADDRESS_5_BYTES 0b00000011 // 1 0 5 bytes (default)