From 6a5fd86bdbf556edf9152104527cfc1e8c285640 Mon Sep 17 00:00:00 2001 From: Peter Hinch Date: Tue, 1 Nov 2016 10:16:59 +0000 Subject: [PATCH] Samples adapted for changing ticks_diff semantics --- ESP8266/benchmark.py | 15 +++++++++++++-- encoders/encoder_timed.py | 15 +++++++++++++-- timed_function/timed_func.py | 12 +++++++++++- 3 files changed, 37 insertions(+), 5 deletions(-) diff --git a/ESP8266/benchmark.py b/ESP8266/benchmark.py index b541c15..43c0c16 100644 --- a/ESP8266/benchmark.py +++ b/ESP8266/benchmark.py @@ -6,7 +6,18 @@ import ubinascii from simple import MQTTClient from machine import unique_id -from time import sleep, ticks_ms, ticks_diff +from utime import sleep, ticks_ms, ticks_diff + +def tdiff(): + new_semantics = ticks_diff(2, 1) == 1 + def func(old, new): + nonlocal new_semantics + if new_semantics: + return ticks_diff(new, old) + return ticks_diff(old, new) + return func + +ticksdiff = tdiff() SERVER = "192.168.0.23" CLIENT_ID = ubinascii.hexlify(unique_id()) @@ -20,7 +31,7 @@ mint = 5000 def sub_cb(topic, msg): global t, maxt, mint - dt = ticks_diff(t, ticks_ms()) + dt = ticksdiff(t, ticks_ms()) print('echo received in {} ms'.format(dt)) print((topic, msg)) maxt = max(maxt, dt) diff --git a/encoders/encoder_timed.py b/encoders/encoder_timed.py index ce141b0..77dfa78 100644 --- a/encoders/encoder_timed.py +++ b/encoders/encoder_timed.py @@ -1,5 +1,16 @@ import pyb, utime +def tdiff(): + new_semantics = utime.ticks_diff(2, 1) == 1 + def func(old, new): + nonlocal new_semantics + if new_semantics: + return utime.ticks_diff(new, old) + return utime.ticks_diff(old, new) + return func + +ticksdiff = tdiff() + class EncoderTimed(object): def __init__(self, pin_x, pin_y, reverse, scale): self.reverse = reverse @@ -29,10 +40,10 @@ class EncoderTimed(object): def rate(self): # Return rate in edges per second self.x_interrupt.disable() self.y_interrupt.disable() - if utime.ticks_diff(self.tlast, utime.ticks_us) > 2000000: # It's stopped + if ticksdiff(self.tlast, utime.ticks_us) > 2000000: # It's stopped result = 0.0 else: - result = 1000000.0/(utime.ticks_diff(self.tprev, self.tlast)) + result = 1000000.0/(ticksdiff(self.tprev, self.tlast)) self.x_interrupt.enable() self.y_interrupt.enable() result *= self.scale diff --git a/timed_function/timed_func.py b/timed_function/timed_func.py index 5305580..616bcdb 100644 --- a/timed_function/timed_func.py +++ b/timed_function/timed_func.py @@ -1,13 +1,23 @@ # Time a function call by means of a decorator import utime +def tdiff(): + new_semantics = utime.ticks_diff(2, 1) == 1 + def func(old, new): + nonlocal new_semantics + if new_semantics: + return utime.ticks_diff(new, old) + return utime.ticks_diff(old, new) + return func + +ticksdiff = tdiff() def timed_function(f, *args, **kwargs): myname = str(f).split(' ')[1] def new_func(*args, **kwargs): t = utime.ticks_us() result = f(*args, **kwargs) - delta = utime.ticks_diff(t, utime.ticks_us()) + delta = ticksdiff(t, utime.ticks_us()) print('Function {} Time = {:6.3f}ms'.format(myname, delta/1000)) return result return new_func