Hey Everyone, for whatever reason I am unable to read any input from Serial ports on the Arduino Giga (I know Serial port 0 is reserved for the M7 for printing), but how do I access for example Serial3 port of the giga from the M4 core. (obviously the M7 has no issues reading). Thanks!
here is an example of what it looks like:
#include "SBUS.h"
#include "Arduino.h"
#include "RPC.h"
//RECEIVER
bfs::SbusRx RECEIVER(&Serial3);
const long receiver_read_delay_microseconds = 15000;
long receiver_last_read_time = 0l;
bool pre_arm_state = false;
void setup() {
if (currentCPU() == "M4") {
RPC.begin();
RECEIVER.begin();
}
if (currentCPU() == "M7") {
RPC.begin();
Serial.begin(115200);
}
}
void loop() {
if (currentCPU() == "M4") {
sendTelemetryToM7("HI");
bfs::SbusData receiverData;
if (RECEIVER.read()) {
sendTelemetryToM7("HO");
receiverData = RECEIVER.data();
for (int i = 0; i < receiverData.NUM_CH; i++) {
switch (i) {
case 0: //yaw
sendTelemetryToM7(String(receiverData.ch[i]));
//yaw_input = convertTo2000Range(receiverData.ch[i]);
break;
case 1: //pitch
//pitch_input = convertTo2000Range(receiverData.ch[i]);
break;
case 2: //throttle
//throttle_input = convertTo2000Range(receiverData.ch[i]);
break;
case 3: //roll
//roll_input = convertTo2000Range(receiverData.ch[i]);
break;
}
}
}
delay(1000);
}
if (currentCPU() == "M7") {
processIncomingM4Telemetry();
}
}
void sendTelemetryToM7(String data) {
data += "#";
RPC.write(data.c_str(), data.length());
}
String serialTelemetryBuffer = "";
void processIncomingM4Telemetry() {
while (RPC.available()) {
char currentChar = (char)RPC.read();
if (currentChar == '#') { //message complete
Serial.println(serialTelemetryBuffer);
serialTelemetryBuffer = "";
} else {
serialTelemetryBuffer += currentChar;
}
}
}
String currentCPU() {
if (HAL_GetCurrentCPUID() == CM7_CPUID) {
return "M7";
} else {
return "M4";
}
}