Test program for the Nordic Semi nRF24L01 Transceiver Module (http://www.sparkfun.com/products/691), talking to another module connected to SparkFun\'s Nordic Serial Interface Board (http://www.sparkfun.com/products/9019).
Diff: main.cpp
- Revision:
- 11:004792c2729a
- Parent:
- 10:10b4e41b67a7
- Child:
- 12:a0b2288a6925
--- a/main.cpp Wed Dec 19 12:15:00 2018 +0000 +++ b/main.cpp Wed Dec 19 13:03:34 2018 +0000 @@ -37,6 +37,30 @@ pc.printf( "(transfers are grouped into %d characters)\r\n", TRANSFER_SIZE ); } +void quitTest() { + + char txData[TRANSFER_SIZE], rxData[TRANSFER_SIZE]; + int rxDataCnt = 0; + txData[0] = 'q'; + txData[1] = 'q'; + + bool acked = false; + + while (!acked) { + my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, 2 ); + if ( my_nrf24l01p.readable() ) { + rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) ); + for (int i = 0; i < rxDataCnt; i++) { + char c = rxData[i]; + if (c == 'q') { + acked = true; + } + } + } + wait(0.1); + } +} + void senderTest(int frequency, int outputPower, int dataRate, bool art) { my_nrf24l01p.setRfFrequency(frequency); my_nrf24l01p.setRfOutputPower(outputPower); @@ -51,7 +75,7 @@ for (int i = 0; i < 1000; i++) { char c = i % 100; - txData[txDataCnt++] = i % 100; + txData[txDataCnt++] = c; if (txDataCnt >= sizeof(txData)) { // pc.printf("Printing txData: %d %d", txData[0], txData[1]); // Send the transmitbuffer via the nRF24L01+ @@ -59,7 +83,9 @@ txDataCnt = 0; } } - my_nrf24l01p.write( NRF24L01P_PIPE_P0, "qq", 2 ); + + quitTest(); + pc.printf("Finished run!\n\r\n\r"); } @@ -69,8 +95,12 @@ // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019) // only handles 4 byte transfers in the ATMega code. - char rxData[TRANSFER_SIZE]; - + char rxData[TRANSFER_SIZE]; + + my_nrf24l01p.setRfFrequency(2400); + + printSettings(); + my_nrf24l01p.powerUp(); // my_nrf24l01p.enableAutoAcknowledge(NRF24L01P_PIPE_P0); @@ -88,18 +118,24 @@ pc.printf(">> Receiving Modus << \n\r"); while (reading) { if ( my_nrf24l01p.readable() ) { + pc.printf("Readable\n\r"); rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) ); for (int i = 0; i < rxDataCnt; i++) { - int x = rxData[i]; - if (x == 113) { - if (rxPacketCnt == 0) { + char c = rxData[i]; + if (c == 'q') { + if (rxPacketCnt != 0) { + char txData[TRANSFER_SIZE]; + txData[0] = 'q'; + txData[1] = 'q'; pc.printf("\n\r-----------\n\r"); pc.printf("DONE!: length = %d \r\n", rxPacketCnt); pc.printf("-----------\n\r"); - rxPacketCnt = 0; + rxPacketCnt = 0; + + my_nrf24l01p.write( NRF24L01P_PIPE_P0, txData, 2); } } else { - data[rxPacketCnt++] = x; + data[rxPacketCnt++] = c; } } rxDataCnt = 0;