Specialized interface code for the nRF24L01P wireless transceiver.
Dependents: WalkingRobot PcRadioBridge FzeroXcontroller WalkingRobot ... more
Diff: Radio.cpp
- Revision:
- 2:24a6ae7c3f69
- Parent:
- 1:32635715529f
- Child:
- 3:245faa365852
--- a/Radio.cpp Sun Dec 23 04:56:14 2012 +0000 +++ b/Radio.cpp Tue Jan 01 23:33:23 2013 +0000 @@ -122,36 +122,39 @@ uint32_t data = 0; int pipe; + while (!(getRegister(FIFO_STATUS) & FIFO_STATUS_RX_EMPTY)) + { + // Check data pipe + wait_us(1000); + pipe = getStatus() & STATUS_RN_P_MASK; + + // Read data + _csn = 0; + _spi.write(R_RX_PAYLOAD); + data |= _spi.write(NOP)<<0; + data |= _spi.write(NOP)<<8; + data |= _spi.write(NOP)<<16; + data |= _spi.write(NOP)<<24; + _csn = 1; + + // Sort into recieve buffer + switch(pipe) + { + case STATUS_RN_P_NO_P0: + rx_controller = data; + break; + + case STATUS_RN_P_NO_P1: + rx_robot[rx_robot_pos++ % RX_BUFFER_SIZE] = data; + break; + + default: + break; + } + } + // Reset IRQ pin setRegister(STATUS, STATUS_RX_DR); - - // Check data pipe - wait_us(1000); - pipe = getStatus() & STATUS_RN_P_MASK; - - // Read data - _csn = 0; - _spi.write(R_RX_PAYLOAD); - data |= _spi.write(NOP)<<0; - data |= _spi.write(NOP)<<8; - data |= _spi.write(NOP)<<16; - data |= _spi.write(NOP)<<24; - _csn = 1; - - // Sort into recieve buffer - switch(pipe) - { - case STATUS_RN_P_NO_P0: - rx_controller = data; - break; - - case STATUS_RN_P_NO_P1: - rx_robot[rx_robot_pos++ % RX_BUFFER_SIZE] = data; - break; - - default: - break; - } }