#include "nRF24Lib.h" uint8_t CSN = NULL; uint8_t CS = NULL; uint8_t RXbuffer[31]; void nRF24_RegisterWrite(uint8_t reg, uint8_t regbit, uint8_t val){ if(CS && CSN != NULL ){ digitalWrite(CSN, HIGH); } SPI.Transfer((W_REGISTER || reg)); if(val){ SPI.Transfer(1 << regbit); } else{ SPI.Transfer(0 << regbit); } digitalWrite(CSN, LOW); } void nRF24_InitRX(){ __delay_ms(110); nRF24_RegisterWrite(CONFIG, PWR_UP, 1); __delay_ms(2); digitalWrite(CS, HIGH); nRF24_RegisterWrite(CONFIG, BITPOS_PRIM_RX, 1); } void nRF24_InitTX(){ __delay_ms(110); nRF24_RegisterWrite(CONFIG, PWR_UP, 1); __delay_ms(2); digitalWrite(CS, HIGH); nRF24_RegisterWrite(CONFIG, BITPOS_PRIM_RX, 0); } void nRF24_WriteTXData(uint8_t* pTXdata, uint8_t asize){ if(CS && CSN != NULL ){ digitalWrite(CSN, HIGH); } SPI.Transfer(W_TX_PAYLOAD); for(int i = 0; i <= asize; i++){ SPI.Transfer(pTXdata[i]); } digitalWrite(CSN, LOW); } uint8_t * nRF24_ReadRXBuffer(){ if(CS && CSN != NULL ){ digitalWrite(CSN, HIGH); } *RXbuffer = SPI.Transfer(R_RX_PAYLOAD); SPI.Transfer(FLUSH_RX); digitalWrite(CSN, LOW); return *RXbuffer; }