import time
def timeit(function, n):
start = time.ticks_us()
for _ in range(n):
function()
return time.ticks_diff(time.ticks_us(), start)
class PPS:
__slots__ = ("rtc", "pin")
def __init__(self, rtc, pin, ntp=False):
self.rtc = rtc
self.pin = pin
if ntp:
self.ntp()
self.pin.init(Pin.IN, pull=Pin.PULL_DOWN)
self.pin.irq(self.pulse, Pin.IRQ_RISING)
def ntp(self):
try:
import ntptime
ntptime.settime()
except ImportError:
print("ntptime is not installed")
except OSError:
print("No internet connection")
def pulse(self):
dt = list(self.rtc.datetime())
dt[-1] = 0
dt[-2] += 1
self.rtc.datetime(dt)
if __name__ == "__main__":
from machine import Pin
from machine import RTC
pps_pin = Pin(17)
rtc = RTC()
pps = PPS(rtc, pps_pin, ntp=True)
repeat = 1_000
delay_us = timeit(pps.pulse, repeat) / repeat
print(f"Delay of pps.pulse call: {delay_us:.0f} us.")
Comments
0 B
|👍
/👎