kopia lustrzana https://github.com/peterhinch/micropython-samples
Samples adapted for changing ticks_diff semantics
rodzic
c0ea6bad60
commit
6a5fd86bdb
|
@ -6,7 +6,18 @@
|
||||||
import ubinascii
|
import ubinascii
|
||||||
from simple import MQTTClient
|
from simple import MQTTClient
|
||||||
from machine import unique_id
|
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"
|
SERVER = "192.168.0.23"
|
||||||
CLIENT_ID = ubinascii.hexlify(unique_id())
|
CLIENT_ID = ubinascii.hexlify(unique_id())
|
||||||
|
@ -20,7 +31,7 @@ mint = 5000
|
||||||
|
|
||||||
def sub_cb(topic, msg):
|
def sub_cb(topic, msg):
|
||||||
global t, maxt, mint
|
global t, maxt, mint
|
||||||
dt = ticks_diff(t, ticks_ms())
|
dt = ticksdiff(t, ticks_ms())
|
||||||
print('echo received in {} ms'.format(dt))
|
print('echo received in {} ms'.format(dt))
|
||||||
print((topic, msg))
|
print((topic, msg))
|
||||||
maxt = max(maxt, dt)
|
maxt = max(maxt, dt)
|
||||||
|
|
|
@ -1,5 +1,16 @@
|
||||||
import pyb, utime
|
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):
|
class EncoderTimed(object):
|
||||||
def __init__(self, pin_x, pin_y, reverse, scale):
|
def __init__(self, pin_x, pin_y, reverse, scale):
|
||||||
self.reverse = reverse
|
self.reverse = reverse
|
||||||
|
@ -29,10 +40,10 @@ class EncoderTimed(object):
|
||||||
def rate(self): # Return rate in edges per second
|
def rate(self): # Return rate in edges per second
|
||||||
self.x_interrupt.disable()
|
self.x_interrupt.disable()
|
||||||
self.y_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
|
result = 0.0
|
||||||
else:
|
else:
|
||||||
result = 1000000.0/(utime.ticks_diff(self.tprev, self.tlast))
|
result = 1000000.0/(ticksdiff(self.tprev, self.tlast))
|
||||||
self.x_interrupt.enable()
|
self.x_interrupt.enable()
|
||||||
self.y_interrupt.enable()
|
self.y_interrupt.enable()
|
||||||
result *= self.scale
|
result *= self.scale
|
||||||
|
|
|
@ -1,13 +1,23 @@
|
||||||
# Time a function call by means of a decorator
|
# Time a function call by means of a decorator
|
||||||
|
|
||||||
import utime
|
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):
|
def timed_function(f, *args, **kwargs):
|
||||||
myname = str(f).split(' ')[1]
|
myname = str(f).split(' ')[1]
|
||||||
def new_func(*args, **kwargs):
|
def new_func(*args, **kwargs):
|
||||||
t = utime.ticks_us()
|
t = utime.ticks_us()
|
||||||
result = f(*args, **kwargs)
|
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))
|
print('Function {} Time = {:6.3f}ms'.format(myname, delta/1000))
|
||||||
return result
|
return result
|
||||||
return new_func
|
return new_func
|
||||||
|
|
Ładowanie…
Reference in New Issue