// Timing jitter test: every 100 ms with injected workload. RUNS = 10; TARGET_MS = 100; MAX_JITTER_MS = 3; TESTV = 0; logn("TEST=", "T001", " NOTE=start"); last = 0; min_dt = 999999; max_dt = 0; sum_dt = 0; cnt = 0; run_count = 0; done = 0; var = 0; var1 = 0; every(100) { t = now(); if (last != 0) { dt = t - last; if (dt < min_dt) { min_dt = dt; } if (dt > max_dt) { max_dt = dt; } sum_dt = sum_dt + dt; cnt = cnt + 1; if (cnt == 5 || cnt == 55) { publish("JitterTest", "count", cnt); // to stress the MCU TESTV = cnt; save(TESTV); load(TESTV, 20); toggle(1); logn("cnt == ", TESTV); } var = 1; for (i = 1; i <= 1000; i = i + 1) { var = var + i; } // print once per 100 cycles to avoid log overhead affecting timing if (cnt == 100) { logn(""); logn("avg", sum_dt / cnt, "min", min_dt, "max", max_dt); run_count = run_count + 1; if (done == 0) { if (max_dt - TARGET_MS > MAX_JITTER_MS) { done = 1; logn("TEST=", "T001", " RESULT=FAIL max=", max_dt, " jitter=", max_dt - TARGET_MS); } if (run_count >= RUNS) { done = 1; logn("TEST=", "T001", " RESULT=PASS runs=", run_count); } } cnt = 0; sum_dt = 0; min_dt = 999999; max_dt = 0; } } last = t; } every(100) { var1 = 1.1; for (i1 = 1; i1 <= 1000; i1 = i1 + 1) { var1 = var1 + i1; } }