mirror of https://github.com/joan2937/pigpio
92 lines
2.4 KiB
Python
92 lines
2.4 KiB
Python
|
#!/usr/bin/env python
|
||
|
|
||
|
#
|
||
|
# WARNING!
|
||
|
#
|
||
|
|
||
|
##############################################################################
|
||
|
# #
|
||
|
# Unless you know what you are doing don't run this script with anything #
|
||
|
# connected to the gpios. You will CAUSE damage. #
|
||
|
# #
|
||
|
##############################################################################
|
||
|
|
||
|
#
|
||
|
# WARNING!
|
||
|
#
|
||
|
|
||
|
import time
|
||
|
|
||
|
import pigpio
|
||
|
|
||
|
delay = 30
|
||
|
|
||
|
class gpioTest:
|
||
|
|
||
|
def __init__(self, pi, gpio, edge, freq, duty):
|
||
|
self.pi = pi
|
||
|
self.gpio = gpio
|
||
|
self.edge = edge
|
||
|
self.freq = freq
|
||
|
self.duty = duty
|
||
|
self.calls = 0
|
||
|
|
||
|
def cb(self, g, t, l):
|
||
|
self.calls = self.calls + 1
|
||
|
# print g,t,l
|
||
|
|
||
|
def num(self):
|
||
|
return self.calls
|
||
|
|
||
|
def start(self):
|
||
|
self.pi.set_PWM_frequency(self.gpio, self.freq)
|
||
|
self.pi.set_PWM_range(self.gpio, 25)
|
||
|
self.pi.set_PWM_dutycycle(self.gpio, self.duty)
|
||
|
self.n = self.pi.callback(self.gpio, self.edge, self.cb)
|
||
|
|
||
|
def stop(self):
|
||
|
self.pi.set_PWM_dutycycle(self.gpio, 0)
|
||
|
self.n.cancel()
|
||
|
|
||
|
pi = pigpio.pi()
|
||
|
|
||
|
t1 = gpioTest(pi, 4, pigpio.EITHER_EDGE, 4000, 1)
|
||
|
t2 = gpioTest(pi, 7, pigpio.RISING_EDGE, 8000, 2)
|
||
|
t3 = gpioTest(pi, 8, pigpio.FALLING_EDGE, 8000, 3)
|
||
|
t4 = gpioTest(pi, 9, pigpio.EITHER_EDGE, 4000, 4)
|
||
|
t5 = gpioTest(pi,10, pigpio.RISING_EDGE, 8000, 5)
|
||
|
t6 = gpioTest(pi,11, pigpio.FALLING_EDGE, 8000, 6)
|
||
|
t7 = gpioTest(pi,14, pigpio.EITHER_EDGE, 4000, 7)
|
||
|
t8 = gpioTest(pi,15, pigpio.RISING_EDGE, 8000, 8)
|
||
|
t9 = gpioTest(pi,17, pigpio.FALLING_EDGE, 8000, 9)
|
||
|
t10 = gpioTest(pi,18, pigpio.EITHER_EDGE, 4000, 10)
|
||
|
t11 = gpioTest(pi,22, pigpio.RISING_EDGE, 8000, 11)
|
||
|
t12 = gpioTest(pi,23, pigpio.FALLING_EDGE, 8000, 12)
|
||
|
t13 = gpioTest(pi,24, pigpio.EITHER_EDGE, 4000, 13)
|
||
|
t14 = gpioTest(pi,25, pigpio.RISING_EDGE, 8000, 14)
|
||
|
|
||
|
# R1: 0 1 4 7 8 9 10 11 14 15 17 18 21 22 23 24 25
|
||
|
# R2: 2 3 4 7 8 9 10 11 14 15 17 18 22 23 24 25 27 28 29 30 31
|
||
|
|
||
|
tests = [t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14]
|
||
|
|
||
|
for i in tests: i.start()
|
||
|
|
||
|
time.sleep(delay)
|
||
|
|
||
|
for i in tests: i.stop()
|
||
|
|
||
|
pi.stop()
|
||
|
|
||
|
tot = 0
|
||
|
msg = ""
|
||
|
|
||
|
for i in tests:
|
||
|
tot += i.num()
|
||
|
msg += str(i.num()) + " "
|
||
|
|
||
|
print(msg)
|
||
|
|
||
|
print("eps={} ({}/{})".format(tot/delay, tot, delay))
|
||
|
|