My fork during debugging.
Fork of NRF2401P by
Diff: NRF2401P.cpp
- Revision:
- 16:a9b83d2b6915
- Parent:
- 14:976a876819ae
- Child:
- 17:ea1484f5757f
--- a/NRF2401P.cpp Sat Jul 11 22:17:36 2015 +0000 +++ b/NRF2401P.cpp Thu Jan 28 14:37:32 2016 +0000 @@ -28,7 +28,7 @@ #include "nRF24l01.h" NRF2401P::NRF2401P ( PinName mosi, PinName miso, PinName sclk, PinName _csn, PinName _ce ) : - csn( DigitalOut( _csn ) ), ce( DigitalOut( _ce ) ) + csn( DigitalOut( _csn ) ), ce( DigitalOut( _ce ) ) { addressWidth = 5; pc = new Serial( USBTX, USBRX ); // tx, rx @@ -87,17 +87,19 @@ } /** -* Sets up a receiver using shockburst and dynamic payload. Uses pipe 1 +* Sets up a receiver using shockburst and dynamic payload. Uses pipe 0 * defaults to 5 bytes */ void NRF2401P::quickRxSetup(int channel,long long addrRx) { start(); setChannel(channel); - setRxAddress(addrRx,1); + // setRxAddress(addrRx,1); + setRxAddress(addrRx,0); setRxMode(); ce=1; wait(0.001f); + writeReg(FEATURE,0x06); // Enable dynamic ack packets } /** @@ -146,8 +148,11 @@ setChannel(channel); setTxAddress(addr); setTxMode(); + writeReg(FEATURE,0x06); ce=1; wait (0.0016f); // wait for pll to settle + flushTx(); + clearStatus(); } /** @@ -338,7 +343,7 @@ * Reads n bytes from a register **/ void NRF2401P::readReg( char address, char *data, char width ) -{ +{ char reg; csn = 0; int i; @@ -491,18 +496,18 @@ char reg = 0x0A + pipe; switch ( pipe ) { - case ( 0 ) : + case ( 0 ) : case ( 1 ) : { - writeReg(reg, address, addressWidth); //Write to RX_ADDR_P0 or _P1 - break; - } - case ( 2 ) : - case ( 3 ) : - case ( 4 ) : - case ( 5 ) : { - writeReg(reg, address, 1); //Write to RX_ADDR_P2 ... _P5 - break; - } + writeReg(reg, address, addressWidth); //Write to RX_ADDR_P0 or _P1 + break; + } + case ( 2 ) : + case ( 3 ) : + case ( 4 ) : + case ( 5 ) : { + writeReg(reg, address, 1); //Write to RX_ADDR_P2 ... _P5 + break; + } } readReg(EN_RXADDR, ®); @@ -572,7 +577,7 @@ } else { readReg(RX_PW_P1, &width); // width of p1 } - + return width; } @@ -715,8 +720,8 @@ if (newline) { printf("\r\n"); } -} - +} + void NRF2401P::printReg(char* name, char address, char width, bool newline) { char data[width];