X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/dbdba35403d9580833c64530a165fd981fbc2738..9129f42cee015932493168fd8972512ae561ef2a:/src/adafruit_blinka/microcontroller/starfive/JH7110/pwmio/PWMOut.py diff --git a/src/adafruit_blinka/microcontroller/starfive/JH7110/pwmio/PWMOut.py b/src/adafruit_blinka/microcontroller/starfive/JH7110/pwmio/PWMOut.py index 9069901..2b9eb5a 100644 --- a/src/adafruit_blinka/microcontroller/starfive/JH7110/pwmio/PWMOut.py +++ b/src/adafruit_blinka/microcontroller/starfive/JH7110/pwmio/PWMOut.py @@ -5,7 +5,7 @@ import VisionFive.gpio as GPIO -GPIO.setmode(GPIO.Board) +GPIO.setmode(GPIO.BOARD) GPIO.setwarnings(False) @@ -19,6 +19,16 @@ class PWMError(IOError): # pylint: enable=unnecessary-pass +def create(pin, *, frequency=500, duty_cycle=0, variable_frequency=False): + """test""" + return PWMOut( + pin, + frequency=frequency, + duty_cycle=duty_cycle, + variable_frequency=variable_frequency, + ) + + class PWMOut: """Pulse Width Modulation Output Class""" @@ -87,27 +97,26 @@ class PWMOut: @property def duty_cycle(self): """Get or set the PWM's output duty cycle which is the fraction of - each pulse which is high. + each pulse which is high. 16-bit Raises: PWMError: if an I/O or OS error occurs. TypeError: if value type is not int or float. - ValueError: if value is out of bounds of 0.0 to 100.0. + ValueError: if value is out of bounds of 0.0 to 1.0. :type: int, float """ - return int(self._duty_cycle) + return int(self._duty_cycle * 65535) @duty_cycle.setter def duty_cycle(self, duty_cycle): if not isinstance(duty_cycle, (int, float)): raise TypeError("Invalid duty cycle type, should be int or float.") - if not 0 <= duty_cycle <= 100: - raise ValueError( - "Invalid duty cycle value, should be between 0.0 and 100.0" - ) + if not 0 <= duty_cycle <= 65535: + raise ValueError("Invalid duty cycle value, should be between 0 and 65535") + duty_cycle = duty_cycle / 655.35 self._duty_cycle = duty_cycle self._pwmpin.ChangeDutyCycle(round(self._duty_cycle))