here i have simplified my programs sorry it took so longdoes anyone see why it crashes? i think the problem MAY be in the master code?
MASTER TX
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <EEPROM.h>
unsigned long mark = 0;
unsigned long nrftimeout = 0;
unsigned long doselinkWait = 0;
unsigned long paramsdelay = 0;
bool nrfEnabled = true;
bool sendFailed = false;
const int pinCE = 22;
const int pinCSN = 24;
float incomingArray[32];
float RX1Request = 12.34;
float RX2Request = 12.34;
int x, y;
int updateState = 1;
int state = 1;
int statecounter = 0;
float RX1Value1 = 11.11;
float RX2Value1 = 12.21;
float RX3ShowParams = 20.20;
float RX3ShowParams2 = 21.21;
float tUpdateCommand = 16.61;
float Value2 = 22.22;
float p2Value = 5.80;
float p1Value = 5.80;
float p1Update = 22.22;
unsigned long retryRefreshMarker = 0;
RF24 wirelessSPI(pinCE, pinCSN);
float IncomingFloatValue = 0.0;
const uint32_t keyword = 0xFADEDEAD;
const uint16_t keywordAddress = 0x00;
const uint16_t paramAddress = keywordAddress + sizeof(keyword);
struct __attribute__ ((packed)) _paramS {
float p1Set = 5.90;
float p2Set = 5.90;
} txParams;
const uint64_t pAddress = 0xB00B1E5000F1;
const uint64_t pAddress1 = 0xB00B1E5000F2;
const uint64_t pAddress2 = 0xB00B1E5000F0;
void setup() {
getParam();
Serial.begin(115200);
wirelessSPI.begin();
wirelessSPI.setDataRate(RF24_250KBPS);
wirelessSPI.setAutoAck(1);
wirelessSPI.enableAckPayload();
wirelessSPI.setCRCLength(8);
wirelessSPI.setRetries(25, 25);
wirelessSPI.setPALevel(RF24_PA_LOW);
Serial.println("hello");
}
void saveParam() {
EEPROM.put(keywordAddress, keyword);
EEPROM.put(paramAddress, txParams);
}
void getParam() {
uint32_t tmpKey;
EEPROM.get(keywordAddress, tmpKey);
if (tmpKey == keyword) {
EEPROM.get(paramAddress, txParams); // EEPROM was already initialized OK to read
} else {
}
}
void loop() {
if (state >= 0) {
readBothResponses();
}
if (nrfEnabled) {
if (updateState == 1) {
requestRX1update();
retryRefreshMarker = millis();
updateState = 2;
}
if (millis() - retryRefreshMarker > 250) {
if (updateState == 2) {
wirelessSPI.flush_rx();
requestRX2update();
wirelessSPI.flush_tx();
retryRefreshMarker = millis();
updateState = 3;
}
}
if (millis() - retryRefreshMarker > 250) {
if (updateState == 3) {
requestRX3update();
updateState = 4;
retryRefreshMarker = millis();
}
}
if (millis() - retryRefreshMarker > 250) {
if (updateState == 4) {
requestRX3Paramsupdate();
updateState = 5;
}
}
if (millis() - retryRefreshMarker > 450) {
if (updateState == 5) {
updateState = 1;
}
}
}
}
void requestRX1update() {
float Array2[1] = {RX1Request};
wirelessSPI.stopListening();
wirelessSPI.openWritingPipe(pAddress2);
if (!wirelessSPI.write( &Array2, sizeof(Array2))) {
Serial.println("rx1 failed");
}
else {
wirelessSPI.stopListening();
wirelessSPI.openReadingPipe(1, pAddress2);
wirelessSPI.startListening();
Serial.println(" rx1 sent");
}
}
void requestRX2update() {
float Array[1] = {RX2Request};
wirelessSPI.stopListening();
wirelessSPI.openWritingPipe(pAddress);
if (!wirelessSPI.write( &Array, sizeof(Array))) {
}
else {
wirelessSPI.stopListening();
wirelessSPI.openReadingPipe(1, pAddress);
wirelessSPI.startListening();
}
}
void requestRX3Paramsupdate() {
wirelessSPI.stopListening();
wirelessSPI.openWritingPipe(pAddress1);
float Array[3] = {RX3ShowParams};
if (!wirelessSPI.write( &Array, sizeof(Array))) {
wirelessSPI.stopListening();
}
else {
wirelessSPI.stopListening();
wirelessSPI.openReadingPipe(1, pAddress1);
wirelessSPI.startListening();
}
}
void requestRX3update() {
wirelessSPI.stopListening();
wirelessSPI.openWritingPipe(pAddress1);
float Array[3] = {tUpdateCommand};
if (!wirelessSPI.write( &Array, sizeof(Array))) {
wirelessSPI.stopListening();
}
else {
wirelessSPI.stopListening();
wirelessSPI.openReadingPipe(1, pAddress1);
wirelessSPI.startListening();
}
}
void readBothResponses() {
if (statecounter >= 10) {
state = 0;
statecounter = 0;
}
statecounter ++;
while (wirelessSPI.available()) {
wirelessSPI.read( &incomingArray, sizeof(incomingArray) );
float incomingResponse2 = float(incomingArray[0]);
if (incomingResponse2 == RX3ShowParams) {
Serial.println("rx3 params 0");
}
if (incomingResponse2 == RX3ShowParams2) {
Serial.println("rx3 params 1");
}
if (incomingResponse2 == p1Update) {
Serial.println("rx1 response");
}
if (incomingResponse2 == RX2Value1) {
Serial.println("rx2 response");
}
}
}