X-Git-Url: https://git.ayoreis.com/Adafruit_Blinka-hackapet.git/blobdiff_plain/120c7a7f4c7559ede6a7d098e4800663381fc93d..050c6e5bdbe0d75d4b0f053addb368421835a3a7:/src/adafruit_blinka/microcontroller/rp2040_u2if/pwmio.py diff --git a/src/adafruit_blinka/microcontroller/rp2040_u2if/pwmio.py b/src/adafruit_blinka/microcontroller/rp2040_u2if/pwmio.py new file mode 100644 index 0000000..3cbf5e4 --- /dev/null +++ b/src/adafruit_blinka/microcontroller/rp2040_u2if/pwmio.py @@ -0,0 +1,47 @@ +"""PWMOut Class for RP2040s with u2if""" +from .rp2040_u2if import rp2040_u2if + + +class PWMOut: + """Base Pulse Width Modulation Output Class""" + + def __init__(self, pin, *, frequency=500, duty_cycle=0, variable_frequency=False): + rp2040_u2if.pwm_configure( + pin, + frequency=frequency, + duty_cycle=duty_cycle, + variable_frequency=variable_frequency, + ) + + self._pin = pin + + def __del__(self): + self.deinit() + + def __enter__(self): + return self + + def __exit__(self, t, value, traceback): + self.deinit() + + def deinit(self): + """Deinit PWM.""" + rp2040_u2if.pwm_deinit(self._pin) + + @property + def duty_cycle(self): + """The PWM's output duty cycle, 16-bit.""" + return rp2040_u2if.pwm_get_duty_cycle(self._pin) + + @duty_cycle.setter + def duty_cycle(self, duty_cycle): + rp2040_u2if.pwm_set_duty_cycle(self._pin, duty_cycle) + + @property + def frequency(self): + """The PWM's output frequency in Hertz.""" + return rp2040_u2if.pwm_get_frequency(self._pin) + + @frequency.setter + def frequency(self, frequency): + rp2040_u2if.pwm_set_frequency(self._pin, frequency)