Hello,
This is my page for updating progress on the Component page for the nRF2401A(Trace Antenna). Since this is going to be the same library and probably the same component page as the chip antenna version I have joined Jas Strong in porting the Arduino Library across to the mbed. I have also created a library based on the work of Per Söderstam on his driver_nRF2401A class. I have published this as a Library and Hello World example here:
Library for the nRF2401A Transceiver
and
Hello world example for the nRF2401A Library
I have only tested this with 2 LPC1768 mbeds so far, but have a LPC800-MAX and a FRDM-KL25Z to test it with too.
The hello world example is currently sending whatever data the receive buffer has every 500ms, but I have tried to use the attach function of the library and use a callback. However, when I do this I am entering the callback and then the mbed stops running. I think I have a problem returning as I my debug led is turning on. I am using 2 separate mbed and so only have RX defined. the code is:
include nRF2401A library with this
#include "mbed.h"
#include "nRF2401A.h"
// comment these out depending on the job of the mbed. If your only using one mbed leave both uncommented.
#define TX
#define RX
DigitalOut myled(LED1);
DigitalOut debug(LED2);
#ifdef TX
nRF2401A rf1(p10, p11, p12, p13, p14);
#endif
#ifdef RX
nRF2401A rf2(p21, p22, p23, p24, p25);
#endif
Serial pc(USBTX, USBRX);
#ifdef RX
bool rx_recieved = false;
nRF2401A_rx_handler_t nRF2401A_rx ()
{
//rf2.printDataPacket(pc);
debug = !debug;
rx_recieved = true;
return;
}
#endif
int main() {
wait(0.005);
pc.printf("Hello nRF2401A\n\r");
#ifdef TX
rf1.setDataPayloadLength(4 << 3)
.setAddress(0x0, 0x0, 0xa6, 0xa6, 0xa6, 3 << 3)
.setCRCMode(nRF2401A::NO_CRC)
.setDataRate(nRF2401A::BIT_RATE_250KBITS)
.setChannel(0x02);
// rf1.printControlPacket(pc);
#endif
#ifdef RX
rf2.setDataPayloadLength(4 << 3)
.setAddress(0x0, 0x0, 0x53, 0x53, 0x53, 3 << 3)
.setCRCMode(nRF2401A::NO_CRC)
.setDataRate(nRF2401A::BIT_RATE_250KBITS)
.setChannel(0x02);
// rf2.printControlPacket(pc);
rf2.attachRXHandler(nRF2401A_rx(), 0);
#endif
#ifdef TX
rf1.flushControlPacket();
#endif
#ifdef RX
rf2.flushControlPacket();
#endif
#ifdef TX
nRF2401A::address_t rf2_addr = {0x0, 0x0, 0x53, 0x53, 0x53};
uint8_t msg[] = {0x01, 0x01, 0x01, 0x01};
uint32_t *msg32 = (uint32_t *) msg;
#endif
while(1) {
#ifdef TX
rf1.sendMsg(rf2_addr, 3 << 3, msg, 4 << 3);
*msg32 += 1;
#endif
myled = 1;
wait(0.25);
#ifdef RX
if (rx_recieved)
{
rf2.printDataPacket(pc);
rx_recieved = false;
}
#endif
myled = 0;
wait(0.25);
}
}
Hello, This is my page for updating progress on the Component page for the nRF2401A(Trace Antenna). Since this is going to be the same library and probably the same component page as the chip antenna version I have joined Jas Strong in porting the Arduino Library across to the mbed. I have also created a library based on the work of Per Söderstam on his driver_nRF2401A class. I have published this as a Library and Hello World example here:
Import librarynRF2401A
Library for the nRF2401A Transceiver
Last commit 09 Mar 2014 by Chris Dick
and
Import programnRF2401A_Hello_World
Hello world example for the nRF2401A Library
Last commit 09 Mar 2014 by Chris Dick
I have only tested this with 2 LPC1768 mbeds so far, but have a LPC800-MAX and a FRDM-KL25Z to test it with too.
The hello world example is currently sending whatever data the receive buffer has every 500ms, but I have tried to use the attach function of the library and use a callback. However, when I do this I am entering the callback and then the mbed stops running. I think I have a problem returning as I my debug led is turning on. I am using 2 separate mbed and so only have RX defined. the code is:
include nRF2401A library with this