HI :-) as promised, im having problems with the wireless connection on the nordic nrf24e1, I am trying to send a packet and then if received, flash an LED. Can anyone see any problems with the below code. first is the transmitter code then i will reply with the receiver code:
#include <reg24e1.h> struct RFConfig { unsigned char n; unsigned char buf[15]; }; typedef struct RFConfig RFConfig; #define ADDR_INDEX 8 // Index to address bytes in RFConfig.buf #define ADDR_COUNT 4 // Number of address bytes const RFConfig txconf = { 15, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x34, 0x56, 0x78, 0x83, 0x6c, 0x04 }; const RFConfig rxconf = { 15, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0x65, 0x43, 0x21, 0x83, 0x6c, 0x05 }; // LED is to be connected to this pin sbit LED_pin = P1^0; // Function prototypes void DELAY_LOOP_Wait(const unsigned int); void DELAY_100us(volatile unsigned char n); unsigned char SPI_ReadWrite(unsigned char b); void TRANSMIT_Packet(unsigned char b); void TRANSMITTER(void); void INIT(void); /*..................................................................*/ void main(void) { INIT(); while(1) { TRANSMITTER(); } } /*------------------------------------------------------------------*- DELAY_LOOP_Wait() -*------------------------------------------------------------------*/ void DELAY_LOOP_Wait(const unsigned int DELAY) { unsigned int x, y; for (x = 0; x <= DELAY; x++) { for (y = 0; y <= 800; y++); } } /*------------------------------------------------------------------*- DELAY_100us() -*------------------------------------------------------------------*/ void DELAY_100us(volatile unsigned char n) { unsigned char i; while(n--) for(i=0;i<35;i++) ; } /*------------------------------------------------------------------*- SPI_ReadWrite() -*------------------------------------------------------------------*/ unsigned char SPI_ReadWrite(unsigned char b) { EXIF &= ~0x20; // Clear SPI interrupt SPI_DATA = b; // Move byte to send to SPI data register while((EXIF & 0x20) == 0x00) // Wait until SPI hs finished transmitting ; return SPI_DATA; } /*------------------------------------------------------------------*- TRANSMIT_Packet() -*------------------------------------------------------------------*/ void TRANSMIT_Packet(unsigned char b) { unsigned char i; CE = 1; DELAY_100us(0); // Start with the address of the receiver: for(i=0;i<ADDR_COUNT;i++) SPI_ReadWrite(rxconf.buf[ADDR_INDEX+i]); SPI_ReadWrite(b); CE = 0; DELAY_100us(3); // Wait ~300us } /*------------------------------------------------------------------*- TRANSMITTER() -*------------------------------------------------------------------*/ void TRANSMITTER(void) { unsigned char b, bo, err; CS = 1; DELAY_100us(0); for(b=0;b<txconf.n;b++) { SPI_ReadWrite(txconf.buf[b]); } CS = 0; for(;;) { TRANSMIT_Packet(b); // Transmit data } } void INIT(void) { PWR_UP = 1; // Turn on Radio DELAY_100us(30); // Wait > 3ms SPICLK = 0; // Max SPI clock (XTAL/8) SPI_CTRL = 0x02; // Connect internal SPI controller to Radio }