NRF com

Dependencies:   mbed nRF24L01P

Committer:
vmihalcut
Date:
Mon May 27 06:06:31 2013 +0000
Revision:
0:fdfe93cb9255
NRF24L01 receiver

Who changed what in which revision?

UserRevisionLine numberNew contents of line
vmihalcut 0:fdfe93cb9255 1 #include "mbed.h"
vmihalcut 0:fdfe93cb9255 2 #include "nRF24L01P.h"
vmihalcut 0:fdfe93cb9255 3 #include "rtos.h"
vmihalcut 0:fdfe93cb9255 4
vmihalcut 0:fdfe93cb9255 5 //*******************************************************************************************************************************
vmihalcut 0:fdfe93cb9255 6
vmihalcut 0:fdfe93cb9255 7 /*Serial pc(USBTX, USBRX); // tx, rx
vmihalcut 0:fdfe93cb9255 8
vmihalcut 0:fdfe93cb9255 9 nRF24L01P my_nrf24l01p(PTD2, // MOSI
vmihalcut 0:fdfe93cb9255 10 PTD3, // MISO
vmihalcut 0:fdfe93cb9255 11 PTD1, // SCK
vmihalcut 0:fdfe93cb9255 12 PTA13, // CSN
vmihalcut 0:fdfe93cb9255 13 PTD5, // CE
vmihalcut 0:fdfe93cb9255 14 PTD0); // IRQ
vmihalcut 0:fdfe93cb9255 15
vmihalcut 0:fdfe93cb9255 16 DigitalOut led(LED_RED);
vmihalcut 0:fdfe93cb9255 17
vmihalcut 0:fdfe93cb9255 18 int main() {
vmihalcut 0:fdfe93cb9255 19 pc.baud(9600);
vmihalcut 0:fdfe93cb9255 20 pc.format();
vmihalcut 0:fdfe93cb9255 21
vmihalcut 0:fdfe93cb9255 22 // The nRF24L01+ supports transfers from 1 to 32 bytes, but Sparkfun's
vmihalcut 0:fdfe93cb9255 23 // "Nordic Serial Interface Board" (http://www.sparkfun.com/products/9019)
vmihalcut 0:fdfe93cb9255 24 // only handles 4 byte transfers in the ATMega code.
vmihalcut 0:fdfe93cb9255 25 #define TRANSFER_SIZE 4
vmihalcut 0:fdfe93cb9255 26
vmihalcut 0:fdfe93cb9255 27 char rxData[TRANSFER_SIZE];
vmihalcut 0:fdfe93cb9255 28 int rxDataCnt = 0;
vmihalcut 0:fdfe93cb9255 29
vmihalcut 0:fdfe93cb9255 30 my_nrf24l01p.powerUp();
vmihalcut 0:fdfe93cb9255 31
vmihalcut 0:fdfe93cb9255 32 // Display the (default) setup of the nRF24L01+ chip
vmihalcut 0:fdfe93cb9255 33 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
vmihalcut 0:fdfe93cb9255 34 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
vmihalcut 0:fdfe93cb9255 35 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
vmihalcut 0:fdfe93cb9255 36 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
vmihalcut 0:fdfe93cb9255 37 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
vmihalcut 0:fdfe93cb9255 38
vmihalcut 0:fdfe93cb9255 39 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
vmihalcut 0:fdfe93cb9255 40
vmihalcut 0:fdfe93cb9255 41
vmihalcut 0:fdfe93cb9255 42 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
vmihalcut 0:fdfe93cb9255 43
vmihalcut 0:fdfe93cb9255 44 my_nrf24l01p.setReceiveMode();
vmihalcut 0:fdfe93cb9255 45
vmihalcut 0:fdfe93cb9255 46 my_nrf24l01p.enable();
vmihalcut 0:fdfe93cb9255 47
vmihalcut 0:fdfe93cb9255 48 //my_nrf24l01p.enableAutoAcknowledge();
vmihalcut 0:fdfe93cb9255 49
vmihalcut 0:fdfe93cb9255 50 while (1)
vmihalcut 0:fdfe93cb9255 51 {
vmihalcut 0:fdfe93cb9255 52 //pc.printf("while(1) \r\n"); z
vmihalcut 0:fdfe93cb9255 53 while( !my_nrf24l01p.readable() );
vmihalcut 0:fdfe93cb9255 54 //pc.printf("%d", my_nrf24l01p.readable());
vmihalcut 0:fdfe93cb9255 55 //if ( my_nrf24l01p.readable() )
vmihalcut 0:fdfe93cb9255 56 {
vmihalcut 0:fdfe93cb9255 57 //pc.printf("my_nrf24l01p.readable() \r\n");
vmihalcut 0:fdfe93cb9255 58 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
vmihalcut 0:fdfe93cb9255 59 rxData[rxDataCnt] = '\0';
vmihalcut 0:fdfe93cb9255 60 pc.printf("rxData: %s \n\r", rxData);
vmihalcut 0:fdfe93cb9255 61 //for ( int i = 0; rxDataCnt > 0; rxDataCnt--, i++ )
vmihalcut 0:fdfe93cb9255 62 //{
vmihalcut 0:fdfe93cb9255 63 // pc.putc( rxData[i] );
vmihalcut 0:fdfe93cb9255 64 //}
vmihalcut 0:fdfe93cb9255 65 //if(rxDataCnt >= 0 && rxData[0] == 's' && rxData[1] == 't')
vmihalcut 0:fdfe93cb9255 66 {
vmihalcut 0:fdfe93cb9255 67 //while(1)
vmihalcut 0:fdfe93cb9255 68 {
vmihalcut 0:fdfe93cb9255 69 led = 1 - led;
vmihalcut 0:fdfe93cb9255 70 //wait(0.1);
vmihalcut 0:fdfe93cb9255 71 }
vmihalcut 0:fdfe93cb9255 72 }
vmihalcut 0:fdfe93cb9255 73 }
vmihalcut 0:fdfe93cb9255 74 }
vmihalcut 0:fdfe93cb9255 75 }*/
vmihalcut 0:fdfe93cb9255 76
vmihalcut 0:fdfe93cb9255 77 //*******************************************************************************************************************************
vmihalcut 0:fdfe93cb9255 78
vmihalcut 0:fdfe93cb9255 79 /*
vmihalcut 0:fdfe93cb9255 80 Serial pc(USBTX, USBRX); // tx, rx
vmihalcut 0:fdfe93cb9255 81
vmihalcut 0:fdfe93cb9255 82 nRF24L01P my_nrf24l01p(PTD2, // MOSI
vmihalcut 0:fdfe93cb9255 83 PTD3, // MISO
vmihalcut 0:fdfe93cb9255 84 PTD1, // SCK
vmihalcut 0:fdfe93cb9255 85 PTA13, // CSN
vmihalcut 0:fdfe93cb9255 86 PTD7, // CE
vmihalcut 0:fdfe93cb9255 87 PTD0); // IRQ
vmihalcut 0:fdfe93cb9255 88 #define TRANSFER_SIZE 4
vmihalcut 0:fdfe93cb9255 89
vmihalcut 0:fdfe93cb9255 90 DigitalOut led(LED_RED);
vmihalcut 0:fdfe93cb9255 91
vmihalcut 0:fdfe93cb9255 92 int main() {
vmihalcut 0:fdfe93cb9255 93 pc.baud(9600);
vmihalcut 0:fdfe93cb9255 94 pc.format();
vmihalcut 0:fdfe93cb9255 95
vmihalcut 0:fdfe93cb9255 96 char rxData[TRANSFER_SIZE];
vmihalcut 0:fdfe93cb9255 97 int rxDataCnt = 0;
vmihalcut 0:fdfe93cb9255 98
vmihalcut 0:fdfe93cb9255 99 my_nrf24l01p.powerUp();
vmihalcut 0:fdfe93cb9255 100
vmihalcut 0:fdfe93cb9255 101 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
vmihalcut 0:fdfe93cb9255 102 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
vmihalcut 0:fdfe93cb9255 103 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
vmihalcut 0:fdfe93cb9255 104 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
vmihalcut 0:fdfe93cb9255 105 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
vmihalcut 0:fdfe93cb9255 106
vmihalcut 0:fdfe93cb9255 107 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
vmihalcut 0:fdfe93cb9255 108
vmihalcut 0:fdfe93cb9255 109 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
vmihalcut 0:fdfe93cb9255 110
vmihalcut 0:fdfe93cb9255 111 my_nrf24l01p.setReceiveMode();
vmihalcut 0:fdfe93cb9255 112
vmihalcut 0:fdfe93cb9255 113 my_nrf24l01p.enable();
vmihalcut 0:fdfe93cb9255 114
vmihalcut 0:fdfe93cb9255 115 led = 0;
vmihalcut 0:fdfe93cb9255 116
vmihalcut 0:fdfe93cb9255 117 while (1)
vmihalcut 0:fdfe93cb9255 118 {
vmihalcut 0:fdfe93cb9255 119 while( !my_nrf24l01p.readable() );
vmihalcut 0:fdfe93cb9255 120 {
vmihalcut 0:fdfe93cb9255 121 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
vmihalcut 0:fdfe93cb9255 122 rxData[rxDataCnt] = '\0';
vmihalcut 0:fdfe93cb9255 123 pc.printf("rxData: %s \n\r", rxData);
vmihalcut 0:fdfe93cb9255 124 if(rxDataCnt ==4 && rxData[0] == 's' && rxData[1] == 't' && rxData[2] == 'a')
vmihalcut 0:fdfe93cb9255 125 {
vmihalcut 0:fdfe93cb9255 126 led = 1;
vmihalcut 0:fdfe93cb9255 127 }
vmihalcut 0:fdfe93cb9255 128 if(rxDataCnt ==4 && rxData[0] == 'S' && rxData[1] == 'T' && rxData[2] == 'A')
vmihalcut 0:fdfe93cb9255 129 {
vmihalcut 0:fdfe93cb9255 130 led = 0;
vmihalcut 0:fdfe93cb9255 131 }
vmihalcut 0:fdfe93cb9255 132 }
vmihalcut 0:fdfe93cb9255 133 }
vmihalcut 0:fdfe93cb9255 134 }
vmihalcut 0:fdfe93cb9255 135 */
vmihalcut 0:fdfe93cb9255 136 //*******************************************************************************************************************************
vmihalcut 0:fdfe93cb9255 137
vmihalcut 0:fdfe93cb9255 138 /*Serial pc(USBTX, USBRX); // tx, rx
vmihalcut 0:fdfe93cb9255 139
vmihalcut 0:fdfe93cb9255 140 nRF24L01P my_nrf24l01p(PTD2, // MOSI
vmihalcut 0:fdfe93cb9255 141 PTD3, // MISO
vmihalcut 0:fdfe93cb9255 142 PTE1, // SCK
vmihalcut 0:fdfe93cb9255 143 PTA13, // CSN
vmihalcut 0:fdfe93cb9255 144 PTD7, // CE
vmihalcut 0:fdfe93cb9255 145 PTE0); // IRQ
vmihalcut 0:fdfe93cb9255 146 #define TRANSFER_SIZE 4
vmihalcut 0:fdfe93cb9255 147
vmihalcut 0:fdfe93cb9255 148 DigitalOut led(LED_RED);
vmihalcut 0:fdfe93cb9255 149 DigitalOut led2(LED_GREEN);
vmihalcut 0:fdfe93cb9255 150
vmihalcut 0:fdfe93cb9255 151 //signals
vmihalcut 0:fdfe93cb9255 152 #define START_THREAD_SIGNAL 0x01
vmihalcut 0:fdfe93cb9255 153
vmihalcut 0:fdfe93cb9255 154 Thread *threadCountReceive;
vmihalcut 0:fdfe93cb9255 155 volatile int rxDataCntPerSec;
vmihalcut 0:fdfe93cb9255 156
vmihalcut 0:fdfe93cb9255 157 Mutex stdio_mutex;
vmihalcut 0:fdfe93cb9255 158
vmihalcut 0:fdfe93cb9255 159 void tCountReceive(void const *args)
vmihalcut 0:fdfe93cb9255 160 {
vmihalcut 0:fdfe93cb9255 161 //Thread::signal_wait(START_THREAD_SIGNAL);
vmihalcut 0:fdfe93cb9255 162 static int copy;
vmihalcut 0:fdfe93cb9255 163 while(true) {
vmihalcut 0:fdfe93cb9255 164 Thread::wait(1000);
vmihalcut 0:fdfe93cb9255 165 // copy = rxDataCntPerSec;
vmihalcut 0:fdfe93cb9255 166 //copy++;
vmihalcut 0:fdfe93cb9255 167 stdio_mutex.lock();
vmihalcut 0:fdfe93cb9255 168 //pc.printf("ch per sec: %d %d\r\n",copy,rxDataCntPerSec);
vmihalcut 0:fdfe93cb9255 169 pc.printf("ch per sec: %d\r\n",rxDataCntPerSec);
vmihalcut 0:fdfe93cb9255 170 stdio_mutex.unlock();
vmihalcut 0:fdfe93cb9255 171 //led2=1-led2;
vmihalcut 0:fdfe93cb9255 172 rxDataCntPerSec = 0;
vmihalcut 0:fdfe93cb9255 173 }
vmihalcut 0:fdfe93cb9255 174 }
vmihalcut 0:fdfe93cb9255 175
vmihalcut 0:fdfe93cb9255 176 int main()
vmihalcut 0:fdfe93cb9255 177 {
vmihalcut 0:fdfe93cb9255 178 pc.baud(9600);
vmihalcut 0:fdfe93cb9255 179 pc.format();
vmihalcut 0:fdfe93cb9255 180
vmihalcut 0:fdfe93cb9255 181 char rxData[TRANSFER_SIZE];
vmihalcut 0:fdfe93cb9255 182 int rxDataCnt = 0;
vmihalcut 0:fdfe93cb9255 183
vmihalcut 0:fdfe93cb9255 184 my_nrf24l01p.powerUp();
vmihalcut 0:fdfe93cb9255 185
vmihalcut 0:fdfe93cb9255 186 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
vmihalcut 0:fdfe93cb9255 187 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
vmihalcut 0:fdfe93cb9255 188 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
vmihalcut 0:fdfe93cb9255 189 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
vmihalcut 0:fdfe93cb9255 190 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
vmihalcut 0:fdfe93cb9255 191
vmihalcut 0:fdfe93cb9255 192 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
vmihalcut 0:fdfe93cb9255 193
vmihalcut 0:fdfe93cb9255 194 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
vmihalcut 0:fdfe93cb9255 195 my_nrf24l01p.setReceiveMode();
vmihalcut 0:fdfe93cb9255 196 my_nrf24l01p.enable();
vmihalcut 0:fdfe93cb9255 197
vmihalcut 0:fdfe93cb9255 198 threadCountReceive = new Thread(tCountReceive,NULL,osPriorityNormal);
vmihalcut 0:fdfe93cb9255 199 //Thread::wait(500);
vmihalcut 0:fdfe93cb9255 200 //threadCountReceive->signal_set(START_THREAD_SIGNAL);
vmihalcut 0:fdfe93cb9255 201
vmihalcut 0:fdfe93cb9255 202 while (1)
vmihalcut 0:fdfe93cb9255 203 {
vmihalcut 0:fdfe93cb9255 204 while( !my_nrf24l01p.readable() )
vmihalcut 0:fdfe93cb9255 205 {
vmihalcut 0:fdfe93cb9255 206 //Thread::wait(10);
vmihalcut 0:fdfe93cb9255 207 }
vmihalcut 0:fdfe93cb9255 208
vmihalcut 0:fdfe93cb9255 209 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
vmihalcut 0:fdfe93cb9255 210 rxData[rxDataCnt] = '\0';
vmihalcut 0:fdfe93cb9255 211 stdio_mutex.lock();
vmihalcut 0:fdfe93cb9255 212 pc.printf("rxData: %d - %d \n\r", rxDataCntPerSec,rxDataCnt);
vmihalcut 0:fdfe93cb9255 213 rxDataCntPerSec += rxDataCnt;
vmihalcut 0:fdfe93cb9255 214 stdio_mutex.unlock();
vmihalcut 0:fdfe93cb9255 215
vmihalcut 0:fdfe93cb9255 216 //led = 1 - led;
vmihalcut 0:fdfe93cb9255 217
vmihalcut 0:fdfe93cb9255 218 }
vmihalcut 0:fdfe93cb9255 219 }*/
vmihalcut 0:fdfe93cb9255 220
vmihalcut 0:fdfe93cb9255 221 Serial pc(USBTX, USBRX); // tx, rx
vmihalcut 0:fdfe93cb9255 222
vmihalcut 0:fdfe93cb9255 223 nRF24L01P my_nrf24l01p(p5, p6, p7, p8, p9);
vmihalcut 0:fdfe93cb9255 224 #define TRANSFER_SIZE 32
vmihalcut 0:fdfe93cb9255 225
vmihalcut 0:fdfe93cb9255 226 DigitalOut led(LED1);
vmihalcut 0:fdfe93cb9255 227
vmihalcut 0:fdfe93cb9255 228 int main() {
vmihalcut 0:fdfe93cb9255 229 pc.baud(19200);
vmihalcut 0:fdfe93cb9255 230 pc.format();
vmihalcut 0:fdfe93cb9255 231
vmihalcut 0:fdfe93cb9255 232 char rxData[TRANSFER_SIZE];
vmihalcut 0:fdfe93cb9255 233 int rxDataCnt = 0;
vmihalcut 0:fdfe93cb9255 234
vmihalcut 0:fdfe93cb9255 235 my_nrf24l01p.powerUp();
vmihalcut 0:fdfe93cb9255 236
vmihalcut 0:fdfe93cb9255 237 pc.printf( "nRF24L01+ Frequency : %d MHz\r\n", my_nrf24l01p.getRfFrequency() );
vmihalcut 0:fdfe93cb9255 238 pc.printf( "nRF24L01+ Output power : %d dBm\r\n", my_nrf24l01p.getRfOutputPower() );
vmihalcut 0:fdfe93cb9255 239 pc.printf( "nRF24L01+ Data Rate : %d kbps\r\n", my_nrf24l01p.getAirDataRate() );
vmihalcut 0:fdfe93cb9255 240 pc.printf( "nRF24L01+ TX Address : 0x%010llX\r\n", my_nrf24l01p.getTxAddress() );
vmihalcut 0:fdfe93cb9255 241 pc.printf( "nRF24L01+ RX Address : 0x%010llX\r\n", my_nrf24l01p.getRxAddress() );
vmihalcut 0:fdfe93cb9255 242
vmihalcut 0:fdfe93cb9255 243 pc.printf( "Type keys to test transfers:\r\n (transfers are grouped into %d characters)\r\n", TRANSFER_SIZE );
vmihalcut 0:fdfe93cb9255 244
vmihalcut 0:fdfe93cb9255 245 my_nrf24l01p.setTransferSize( TRANSFER_SIZE );
vmihalcut 0:fdfe93cb9255 246
vmihalcut 0:fdfe93cb9255 247 my_nrf24l01p.setReceiveMode();
vmihalcut 0:fdfe93cb9255 248
vmihalcut 0:fdfe93cb9255 249 my_nrf24l01p.enable();
vmihalcut 0:fdfe93cb9255 250
vmihalcut 0:fdfe93cb9255 251 led = 0;
vmihalcut 0:fdfe93cb9255 252
vmihalcut 0:fdfe93cb9255 253 while (1)
vmihalcut 0:fdfe93cb9255 254 {
vmihalcut 0:fdfe93cb9255 255 while( !my_nrf24l01p.readable() );
vmihalcut 0:fdfe93cb9255 256 {
vmihalcut 0:fdfe93cb9255 257 rxDataCnt = my_nrf24l01p.read( NRF24L01P_PIPE_P0, rxData, sizeof( rxData ) );
vmihalcut 0:fdfe93cb9255 258 rxData[rxDataCnt] = '\0';
vmihalcut 0:fdfe93cb9255 259 pc.printf("rxData: %s \n\r", rxData);
vmihalcut 0:fdfe93cb9255 260 if(rxDataCnt ==4 && rxData[0] == 's' && rxData[1] == 't' && rxData[2] == 'a')
vmihalcut 0:fdfe93cb9255 261 {
vmihalcut 0:fdfe93cb9255 262 led = 1;
vmihalcut 0:fdfe93cb9255 263 }
vmihalcut 0:fdfe93cb9255 264 if(rxDataCnt ==4 && rxData[0] == 'S' && rxData[1] == 'T' && rxData[2] == 'A')
vmihalcut 0:fdfe93cb9255 265 {
vmihalcut 0:fdfe93cb9255 266 led = 0;
vmihalcut 0:fdfe93cb9255 267 }
vmihalcut 0:fdfe93cb9255 268 }
vmihalcut 0:fdfe93cb9255 269 }
vmihalcut 0:fdfe93cb9255 270 }