mirror of
https://github.com/xtacocorex/CHIP_IO
synced 2025-07-20 12:53:22 +00:00
100 lines
2.5 KiB
Python
100 lines
2.5 KiB
Python
#!/usr/bin/python
|
|
|
|
import CHIP_IO.PWM as PWM
|
|
import CHIP_IO.GPIO as GPIO
|
|
import CHIP_IO.OverlayManager as OM
|
|
import time
|
|
import datetime
|
|
import threading
|
|
|
|
class PWMReceiver(threading.Thread):
|
|
def __init__(self,gpio,key,maxcount=20,sleeptime=0.5):
|
|
self.gpio = gpio
|
|
self.key = key
|
|
self.counter = 0
|
|
self.maxcount = maxcount
|
|
self.sleeptime = sleeptime
|
|
threading.Thread.__init__(self)
|
|
|
|
def run(self):
|
|
print("SETTING UP RECEIVER GPIO")
|
|
self.gpio.cleanup()
|
|
self.gpio.setup(self.key, self.gpio.IN)
|
|
print("STARTING RECEIVE LOOP")
|
|
try:
|
|
while self.counter < self.maxcount:
|
|
pwmval = self.gpio.input(self.key)
|
|
print("PWM VALUE: {0} @ {1}".format(pwmval, datetime.datetime.now()))
|
|
time.sleep(self.sleeptime)
|
|
self.counter += 1
|
|
except KeyboardInterrupt:
|
|
self.gpio.cleanup(self.key)
|
|
|
|
def PrintPwmData():
|
|
print("PRINTING PWM SYSFS DATA")
|
|
f = open("/sys/class/pwm/pwmchip0/pwm0/enable")
|
|
print("PWM0 ENABLE:\t{}".format(f.readline()))
|
|
f.close()
|
|
f = open("/sys/class/pwm/pwmchip0/pwm0/period")
|
|
print("PWM0 PERIOD:\t{}".format(f.readline()))
|
|
f.close()
|
|
f = open("/sys/class/pwm/pwmchip0/pwm0/duty_cycle")
|
|
print("PWM0 DUTY CYCLE:\t{}".format(f.readline()))
|
|
f.close()
|
|
f = open("/sys/class/pwm/pwmchip0/pwm0/polarity")
|
|
print("PWM0 POLARITY:\t{}".format(f.readline()))
|
|
f.close()
|
|
|
|
if __name__ == "__main__":
|
|
# SETUP VARIABLES
|
|
PWMGPIO = "PWM0"
|
|
RECEIVERGPIO = "CSID0"
|
|
COUNT = 150
|
|
SLEEPTIME = 0.01
|
|
|
|
# LOAD THE PWM OVERLAY
|
|
print("LOADING PWM OVERLAY")
|
|
OM.load("PWM0")
|
|
|
|
time.sleep(1)
|
|
|
|
# CLEANUP THE GPIO
|
|
#GPIO.cleanup()
|
|
#PWM.cleanup()
|
|
|
|
# SETUP PWM
|
|
try:
|
|
print("PWM START")
|
|
PWM.toggle_debug()
|
|
PWM.start(PWMGPIO, 15, 50, 1)
|
|
PrintPwmData()
|
|
|
|
# UNCOMMENT FOR CRASH
|
|
#print("PWM SET FREQUENCY")
|
|
#PWM.set_frequency(PWMGPIO, 200)
|
|
#PrintPwmData()
|
|
|
|
# UNCOMMENT FOR CRASH
|
|
#print("PWM SET DUTY CYCLE")
|
|
#PWM.set_duty_cycle(PWMGPIO, 25)
|
|
#PrintPwmData()
|
|
|
|
# SETUP PWM RECEIVER
|
|
#rcvr = PWMReceiver(GPIO, RECEIVERGPIO, COUNT, SLEEPTIME)
|
|
#rcvr.start()
|
|
|
|
#time.sleep(COUNT*SLEEPTIME + 1)
|
|
raw_input("PRESS ENTER WHEN DONE")
|
|
|
|
except:
|
|
raise
|
|
finally:
|
|
# CLEANUP
|
|
print("CLEANUP")
|
|
PWM.stop(PWMGPIO)
|
|
PWM.cleanup()
|
|
#OM.unload("PWM0")
|
|
#GPIO.cleanup()
|
|
|
|
|