RX basestation controller of the NERF demo. Designed for use with the FRDM-K64F and the nRF24L01P module.

Dependencies:   mbed nRF24L01P

Fork of NerfGun_nRF24L01P_RX by Clark Jarvis

Files at this revision

API Documentation at this revision

Comitter:
Owen
Date:
Wed Jan 19 23:26:02 2011 +0000
Child:
1:5be2682710c6
Commit message:
Initial revision.

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
nRF24L01P.lib Show annotated file Show diff for this revision Revisions of this file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Wed Jan 19 23:26:02 2011 +0000
@@ -0,0 +1,135 @@
+/**
+ * @file main.cpp (nRF24L01P_Hello_World)
+ *
+ * @author Owen Edwards
+ *
+ * @section LICENSE
+ *
+ * Copyright (c) 2010 Owen Edwards
+ *
+ *    This program is free software: you can redistribute it and/or modify
+ *    it under the terms of the GNU General Public License as published by
+ *    the Free Software Foundation, either version 3 of the License, or
+ *    (at your option) any later version.
+ *
+ *    This program is distributed in the hope that it will be useful,
+ *    but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *    GNU General Public License for more details.
+ *
+ *    You should have received a copy of the GNU General Public License
+ *    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * @section DESCRIPTION
+ *
+ * Demo the nRF24L01+ Library
+ *
+ * Datasheet:
+ *
+ * http://www.nordicsemi.no/files/Product/data_sheet/nRF24L01P_Product_Specification_1_0.pdf
+ */
+
+#include "mbed.h"
+#include "nRF24L01P.h"
+
+Serial pc(USBTX, USBRX); // tx, rx
+
+nRF24L01P my_nrf24l01p(p5, p6, p7, p8, p9, p10);    // mosi, miso, sck, csn, ce, irq
+
+DigitalOut myled1(LED1);
+DigitalOut myled2(LED2);
+
+int main() {
+
+//
+// The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
+//  "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
+//  only handles 4 byte transfers in the ATMega code.
+//
+#define TRANSFER_SIZE   4
+
+    char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE];
+    int txDataCnt = 0;
+    int rxDataCnt = 0;
+
+    my_nrf24l01p.powerUp();
+
+    //
+    // Display the (default) setup of the nRF24L01+ chip
+    //
+    pc.printf( "nRF24L01+ Frequency    : %d MHz\r\n",  my_nrf24l01p.getRfFrequency() );
+    pc.printf( "nRF24L01+ Output power : %d dBm\r\n",  my_nrf24l01p.getRfOutputPower() );
+    pc.printf( "nRF24L01+ Data Rate    : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
+    pc.printf( "nRF24L01+ TX Address   : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
+    pc.printf( "nRF24L01+ RX Address   : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
+
+    pc.printf( "Type keys to test transfers:\r\n  (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
+
+    my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
+
+    my_nrf24l01p.setReceiveMode();
+    my_nrf24l01p.enable();
+
+    while (1) {
+
+        //
+        // If we've received anything over the host serial link...
+        //
+        if ( pc.readable() ) {
+
+            //
+            // ...add it to the transmit buffer
+            //
+            txData[txDataCnt++] = pc.getc();
+
+            //
+            // If the transmit buffer is full
+            //
+            if ( txDataCnt >= sizeof( txData ) ) {
+
+                //
+                // Send the transmitbuffer via the nRF24L01+
+                //
+                my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, txDataCnt );
+
+                txDataCnt = 0;
+
+            }
+
+            //
+            // Toggle LED1 (to help debug Host -> nRF24L01+ communication)
+            //
+            myled1 = !myled1;
+
+        }
+
+        //
+        // If we've received anything in the nRF24L01+...
+        //
+        if ( my_nrf24l01p.readable() ) {
+
+            //
+            // ...read the data into the receive buffer
+            //
+            rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
+
+            //
+            // Display the receive buffer contents via the host serial link
+            //
+            for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ ) {
+
+                pc.putc( rxData[i] );
+
+            }
+
+            //
+            // Toggle LED2 (to help debug nRF24L01+ -> Host communication)
+            //
+            myled2 = !myled2;
+
+        }
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mbed.bld	Wed Jan 19 23:26:02 2011 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/mbed_official/code/mbed/builds/e2ac27c8e93e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/nRF24L01P.lib	Wed Jan 19 23:26:02 2011 +0000
@@ -0,0 +1,1 @@
+http://mbed.org/users/Owen/code/nRF24L01P/#8ae48233b4e4