• R/O
  • SSH
  • HTTPS

chibios: Commit


Commit MetaInfo

Revision14360 (tree)
Time2021-05-09 22:48:36
Authorgdisirio

Log Message

Added a simplified accuracy test to VT Storm for continuous timers.

Change Summary

Incremental Difference

--- trunk/testrt/VT_STORM/source/vt_storm.c (revision 14359)
+++ trunk/testrt/VT_STORM/source/vt_storm.c (revision 14360)
@@ -52,8 +52,10 @@
5252 static virtual_timer_t watchdog;
5353 static virtual_timer_t wrapper;
5454 static virtual_timer_t sweeper0, sweeperm1, sweeperp1, sweeperm3, sweeperp3;
55+static virtual_timer_t continuous;
5556 static volatile sysinterval_t delay;
5657 static volatile bool saturated;
58+static uint32_t vtcus;
5759
5860 /*===========================================================================*/
5961 /* Module local functions. */
@@ -128,6 +130,13 @@
128130 chSysUnlockFromISR();
129131 }
130132
133+static void continuous_cb(virtual_timer_t *vtp, void *p) {
134+
135+ (void)vtp;
136+ (void)p;
137+ vtcus++;
138+}
139+
131140 /*===========================================================================*/
132141 /* Module exported functions. */
133142 /*===========================================================================*/
@@ -177,7 +186,11 @@
177186 for (i = 1; i <= VT_STORM_CFG_ITERATIONS; i++) {
178187
179188 chprintf(cfg->out, "Iteration %d\r\n", i);
189+ chThdSleepS(TIME_MS2I(10));
180190
191+ /* Starting continuous timer.*/
192+ vtcus = 0;
193+
181194 delay = 120;
182195 saturated = false;
183196 do {
@@ -190,6 +203,7 @@
190203 chVTSetI(&sweeperm3, delay - 3, sweeperm3_cb, NULL);
191204 chVTSetI(&sweeperp3, delay + 3, sweeperp3_cb, NULL);
192205 chVTSetI(&wrapper, (sysinterval_t) - 1, wrapper_cb, NULL);
206+ chVTSetContinuousI(&continuous, TIME_US2I(50), continuous_cb, NULL);
193207
194208 /* Letting them run for half second.*/
195209 chThdSleepS(TIME_MS2I(500));
@@ -202,6 +216,7 @@
202216 chVTResetI(&sweeperm3);
203217 chVTResetI(&sweeperp3);
204218 chVTResetI(&wrapper);
219+ chVTResetI(&continuous);
205220 chSysUnlock();
206221
207222 if (saturated) {
@@ -215,11 +230,11 @@
215230 } while (delay >= 5);
216231
217232 if (saturated) {
218- chprintf(cfg->out, "\r\nSaturated at %d uS\r\n\r\n", TIME_I2US(delay));
233+ chprintf(cfg->out, "\r\nSaturated at %u uS", TIME_I2US(delay));
234+ chprintf(cfg->out, "\r\nContinuous ticks %u\r\n\r\n", vtcus);
219235 }
220236 else {
221-
222- chprintf(cfg->out, "\r\n\r\n");
237+ chprintf(cfg->out, "\r\nContinuous ticks %u\r\n\r\n", vtcus);
223238 }
224239 }
225240 }
Show on old repository browser