unsigned long times = 0; #define REPORT (5*1000L) // report every 5 seconds unsigned long report = REPORT; unsigned long txchars = 0; #define BAUD 9600 // 2400 is lowest supported, apparently void setup() { // put your setup code here, to run once: Serial.begin(9600); // debug Serial3.begin(BAUD,SERIAL_8N1); // test channel Serial.print("Begin "); Serial.print(BAUD); Serial.println(); } void loop() { // count how much the CPU gets done ++times; // keep serial transmitting at all times if (Serial3.availableForWrite() > 2) { Serial3.write('\x55'); ++txchars; } if (millis() >= report) { Serial.print("Time:"); Serial.print(report/1000L); Serial.print("s Tx:"); Serial.print(txchars); Serial.print(" TxExpected:"); // compensate for buffersize Serial.print((report/1000L)*(BAUD/10) + (64-2)); Serial.print(" Times:"); Serial.println(times); report += REPORT; } }