diff options
author | Giovanni Di Sirio <gdisirio@gmail.com> | 2017-10-12 13:31:42 +0000 |
---|---|---|
committer | Giovanni Di Sirio <gdisirio@gmail.com> | 2017-10-12 13:31:42 +0000 |
commit | 4d0b8bdf6e8c27242b38f69c0831eb2a0ddb689f (patch) | |
tree | 7288ed8f896b3b7852e736657e5edbcb7da81cae /os/rt/include/chvt.h | |
parent | d8b32d7f63c8453135249734f8b542856947e83a (diff) | |
download | ChibiOS-4d0b8bdf6e8c27242b38f69c0831eb2a0ddb689f.tar.gz ChibiOS-4d0b8bdf6e8c27242b38f69c0831eb2a0ddb689f.tar.bz2 ChibiOS-4d0b8bdf6e8c27242b38f69c0831eb2a0ddb689f.zip |
Added support for "large virtual timers", those allows for intervals greater than the system time capability. To be tested.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/branches/rt5_dev_point1@10814 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/rt/include/chvt.h')
-rw-r--r-- | os/rt/include/chvt.h | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/os/rt/include/chvt.h b/os/rt/include/chvt.h index 70a70465e..35bd947e0 100644 --- a/os/rt/include/chvt.h +++ b/os/rt/include/chvt.h @@ -72,7 +72,7 @@ extern "C" {
#endif
void _vt_init(void);
- void chVTDoSetI(virtual_timer_t *vtp, systime_t delay,
+ void chVTDoSetI(virtual_timer_t *vtp, sysinterval_t delay,
vtfunc_t vtfunc, void *par);
void chVTDoResetI(virtual_timer_t *vtp);
#ifdef __cplusplus
@@ -447,6 +447,12 @@ static inline void chVTDoTickI(void) { if (delta < (sysinterval_t)CH_CFG_ST_TIMEDELTA) {
delta = (sysinterval_t)CH_CFG_ST_TIMEDELTA;
}
+#if CH_CFG_INTERVALS_SIZE > CH_CFG_ST_RESOLUTION
+ /* The delta could be too large for the physical timer to handle.*/
+ if (delta > (sysinterval_t)TIME_MAX_SYSTIME) {
+ delta = (sysinterval_t)TIME_MAX_SYSTIME;
+ }
+#endif
port_timer_set_alarm(chTimeAddX(now, delta));
chDbgAssert(chTimeDiffX(ch.vtlist.lasttime, chVTGetSystemTimeX()) <=
|