From ec33f0336880ac530623f4e94ba32234140e94b0 Mon Sep 17 00:00:00 2001 From: maniacbug Date: Fri, 27 May 2011 19:32:59 -0700 Subject: [PATCH] Made all CONFIG register changes incremental not absolute --- RF24.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/RF24.cpp b/RF24.cpp index 5f89db7..531401e 100644 --- a/RF24.cpp +++ b/RF24.cpp @@ -305,6 +305,9 @@ void RF24::begin(void) // Reset current status write_register(STATUS,_BV(RX_DR) | _BV(TX_DS) | _BV(MAX_RT) ); + + // Initialize CRC + write_register(CONFIG, _BV(EN_CRC) ); // Flush buffers flush_rx(); @@ -318,7 +321,7 @@ void RF24::begin(void) void RF24::startListening(void) { - write_register(CONFIG, _BV(EN_CRC) | _BV(PWR_UP) | _BV(PRIM_RX)); + write_register(CONFIG, read_register(CONFIG) | _BV(PWR_UP) | _BV(PRIM_RX)); write_register(STATUS, _BV(RX_DR) | _BV(TX_DS) | _BV(MAX_RT) ); // Restore the pipe0 adddress @@ -345,7 +348,7 @@ void RF24::stopListening(void) void RF24::powerDown(void) { - write_register(CONFIG,0); + write_register(CONFIG,read_register(CONFIG) & ~_BV(PWR_UP)); } /******************************************************************/ @@ -355,7 +358,7 @@ boolean RF24::write( const void* buf, uint8_t len ) boolean result = false; // Transmitter power-up - write_register(CONFIG, _BV(EN_CRC) | _BV(PWR_UP)); + write_register(CONFIG, ( read_register(CONFIG) | _BV(PWR_UP) ) & ~_BV(PRIM_RX) ); delay(2); // Send the payload @@ -401,7 +404,7 @@ boolean RF24::write( const void* buf, uint8_t len ) ce(LOW); // Power down - write_register(CONFIG, _BV(EN_CRC) ); + write_register(CONFIG,read_register(CONFIG) & ~_BV(PWR_UP)); // Reset current status write_register(STATUS,_BV(RX_DR) | _BV(TX_DS) | _BV(MAX_RT) );