I am doing some Serial port tests, and my updates for Serial2 -
My Serial test program however is having some issues with Serial6 and Serial 7... I deleted Serial8
Code:
//connect Serial1 TX -> Serial2 RX, Serial2 TX -> Serial3 RX, Serial3 TX -> Serial4 RX....
#define SPD 1000000
int loop_count = 0;
int receive_counts[8];
int callback_counts[8];
void setup() {
pinMode(13, OUTPUT);
// while (!Serial && millis() < 4000) ;
// Serial.begin(115200);
delay(800);
Serial4.println("Test all Serials");
Serial4.printf("Baud rate: %d\n", SPD);
Serial1.begin(SPD);
Serial2.begin(SPD);
Serial3.begin(SPD);
Serial4.begin(SPD);
Serial5.begin(SPD);
Serial6.begin(SPD);
Serial7.begin(SPD);
}
void loop() {
for (int i=0; i < 8; i++) {
receive_counts[i] = 0;
callback_counts[i] = 0;
}
Serial4.printf("Loop: %d\n", ++loop_count);
Serial1.print("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
Serial1.print("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
Serial1.print("012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789\n");
delay(1000);
Serial4.println();
for (int i=0; i < 7; i++) {
Serial4.printf("%d: %d %d ", i, callback_counts[i], receive_counts[i]);
}
Serial4.println();
}
void serialEvent1() {
digitalWrite(13, !digitalRead(13));
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial1.available()), Serial4.availableForWrite());
Serial1.readBytes(buffer, cb);
Serial4.write(buffer, cb);
callback_counts[0]++;
receive_counts[0] += cb;
}
void serialEvent2() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial2.available()), Serial2.availableForWrite());
Serial2.readBytes(buffer, cb);
Serial2.write(buffer, cb);
callback_counts[1]++;
receive_counts[1] += cb;
}
void serialEvent3() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial3.available()), Serial3.availableForWrite());
Serial3.readBytes(buffer, cb);
Serial3.write(buffer, cb);
callback_counts[2]++;
receive_counts[2] += cb;
}
#if 0
void serialEvent4() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial4.available()), Serial4.availableForWrite());
Serial4.readBytes(buffer, cb);
Serial4.write(buffer, cb);
callback_counts[3]++;
receive_counts[3] += cb;
}
#endif
void serialEvent5() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial5.available()), Serial5.availableForWrite());
Serial5.readBytes(buffer, cb);
Serial5.write(buffer, cb);
callback_counts[4]++;
receive_counts[4] += cb;
}
void serialEvent6() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial6.available()), Serial6.availableForWrite());
Serial6.readBytes(buffer, cb);
Serial6.write(buffer, cb);
callback_counts[5]++;
receive_counts[5] += cb;
}
void serialEvent7() {
uint8_t buffer[80];
uint8_t cb = min (min((int)sizeof(buffer), Serial7.available()), Serial7.availableForWrite());
Serial7.readBytes(buffer, cb);
Serial7.write(buffer, cb);
callback_counts[6]++;
receive_counts[6] += cb;
}
For testing it, I am using Serial4 as the echo point (normally would have been Serial, but...). I start off jumper TX1->RX2 and then if I jumper TX2->RX1 it shows the string I was outputting.. So then move the RX1 to RX3 and then try TX3 to RX1 and it works... So I get to TX1->RX2, TX2->RX3, TX3->RX5, TX5-> RX1 and it works. Trying to RX6 or RX7 it is not showing it receiving any data.
Wondering if
A) the Pogo pins are working? Actually looking at the Adapter board I don't think there are any pogo pins installed for the bottom pins, except pins 30 and 31?
So makes sense it does they don't work