Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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.")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement