Specialized interface code for the nRF24L01P wireless transceiver.

Dependents:   WalkingRobot PcRadioBridge FzeroXcontroller WalkingRobot ... more

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;
-    }
 }