From 7af5a00e40443e6ca7c6112234b86910080aa5fa Mon Sep 17 00:00:00 2001 From: achrn Date: Thu, 20 Feb 2025 18:05:46 +0000 Subject: [PATCH] Update PID.py ticks_diff does not work on time() values on many platforms - see https://docs.micropython.org/en/v1.15/library/utime.html?highlight=time#utime.ticks_diff --- simple_pid/PID.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/simple_pid/PID.py b/simple_pid/PID.py index a07e3ab..0007a10 100644 --- a/simple_pid/PID.py +++ b/simple_pid/PID.py @@ -111,7 +111,10 @@ def __call__(self, input_, dt=None): now = self.time() if dt is None: - dt = utime.ticks_diff(now,self._last_time) if (utime.ticks_diff(now,self._last_time)) else 1e-16 + if self.scale == 'time': + dt = (now - self._last_time) if (now - self._last_time) else 1e-16 + else: + dt = utime.ticks_diff(now,self._last_time) if (utime.ticks_diff(now,self._last_time)) else 1e-16 elif dt <= 0: raise ValueError('dt has negative value {}, must be positive'.format(dt))