Samples adapted for changing ticks_diff semantics

pull/7/head
Peter Hinch 2016-11-01 10:16:59 +00:00
rodzic c0ea6bad60
commit 6a5fd86bdb
3 zmienionych plików z 37 dodań i 5 usunięć

Wyświetl plik

@ -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)

Wyświetl plik

@ -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

Wyświetl plik

@ -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