defragster
Senior Member+
Even TyComm overwhelms the machine at times and dumps 'system data' from somewhere instead of USB incoming data - not news.
Boring and dizzying watching and trying to see what the average is as it comes and goes.
Running the following against t_Sermon still results in quick stopping:
Built as Dual Serial with stats to get some meaning from the spew against TyCommander:
With IDE SerMon as primary it only runs to here:
with stats up to there:
Altered code for USB1:
Boring and dizzying watching and trying to see what the average is as it comes and goes.
Running the following against t_Sermon still results in quick stopping:
Code:
...
count=10041128, lines/sec=0
count=10041129, lines/sec=0
count=1004
Built as Dual Serial with stats to get some meaning from the spew against TyCommander:
Code:
...
Grp to 50000 sum 254354
Grp to 100000 sum 9186332
Grp to 150000 sum 1167211
Grp to 300000 sum 135041
Grp to 350000 sum 1910473
Grp to 400000 sum 1309225
Grp to 500000 sum 8205257
Grp to 550000 sum 4543060
Grp to 600000 sum 6676894
Grp to 650000 sum 2476576
Grp to 700000 sum 3559980
Grp to 750000 sum 575597
@count50000000
...
Grp to 50000 sum 254354
Grp to 100000 sum 9186332
Grp to 150000 sum 1167211
Grp to 300000 sum 135041
Grp to 350000 sum 1910473
Grp to 400000 sum 1309225
Grp to 500000 sum 8872405
Grp to 550000 sum 4543060
Grp to 600000 sum 39819151
Grp to 650000 sum 110148705
Grp to 700000 sum 107430006
Grp to 750000 sum 41085060
Grp to 800000 sum 160157922
Grp to 850000 sum 3981055
@count500000000
With IDE SerMon as primary it only runs to here:
Code:
...
count=16228949, lines/sec=651164
count=16228950, lines/sec=651164
count=16228951, lines/sec=651164
Code:
Grp to 50000 sum 504584
Grp to 400000 sum 804025
Grp to 450000 sum 1329998
Grp to 500000 sum 1028316
Grp to 550000 sum 392432
Grp to 600000 sum 661922
Grp to 700000 sum 1278723
@count16000000
Altered code for USB1:
Code:
// post #2626 original Paul sketch
// https://forum.pjrc.com/threads/54711-Teensy-4-0-First-Beta-Test?p=204681&viewfull=1#post204681
// https://forum.pjrc.com/threads/68199-Teensy-4-1-Lockup?p=288825&viewfull=1#post288825
// Simple test of Serial.print() speed. How many lines/sec can your
// Arduino board print to the serial monitor?
// This combination of printing text and numbers is meant to test the
// most common way Serial printing is used with Arduino.
// On true serial boards, this test measures how much of the bandwidth
// of a high baud rate can really be used. Efficiency copying bytes
// into the transmit buffer, and the serial transmit interrupt, are
// the main factors.
// On native USB boards, this test measures how well the USB stack can
// utilize the USB bandwidth. USB is fast but complex protocol. This
// test tends to measure how well optimized the USB code is. For
// 12 Mbit/sec (full speed) USB, 36848 is the theoretical maximum
// lines/sec. For 480 Mbit/sec (high speed) USB, 1521371 is the
// theoretical maximum lines/sec speed. Unlike ordinary serial, your
// operating system and its drivers, the type of USB port, whether a
// USB hub is used, and CPU load on your computer can affect the speed.
uint32_t count, prior_count;
uint32_t prior_msec;
uint32_t count_per_second;
// Uncomment this for boards where "SerialUSB" needed for native port
//#define Serial SerialUSB
void setup() {
Serial.begin(1000000); // edit for highest baud your board can use
while (!Serial) ;
count = 10000000; // starting with 8 digits gives consistent chars/line
prior_count = count;
count_per_second = 0;
prior_msec = millis();
}
uint32_t groups[40];
void loop() {
Serial.print("count=");
Serial.print(count);
Serial.print(", lines/sec=");
Serial.println(count_per_second);
count = count + 1;
uint32_t msec = millis();
if (msec - prior_msec > 1000) {
// when 1 second as elapsed, update the lines/sec count
prior_msec = prior_msec + 1000;
count_per_second = count - prior_count;
prior_count = count;
}
[B] groups[ count_per_second / 50000 ]++;
if ( !(count%1000000) ) {
for ( int ii=0; ii<40; ii++ ) {
if ( 0!=groups[ii] ) {
SerialUSB1.printf( " Grp to %u sum %u \n", (1+ii)*50000, groups[ii] );
}
}
SerialUSB1.print("\t @count");
SerialUSB1.println(count);
}
[/B]}