1
0
mirror of https://github.com/xtacocorex/CHIP_IO synced 2025-07-20 04:43:21 +00:00
Files
CHIP_IO/test/integrations/pwmtest.py

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()