Xilinx / PYNQ

Python Productivity for ZYNQ
http://www.pynq.io/
BSD 3-Clause "New" or "Revised" License
1.95k stars 808 forks source link

Invalid boundary value in pmod_pwm.py #1411

Closed haipnh closed 4 months ago

haipnh commented 1 year ago

Hi,

I found an invalid boundary value in pynq/lib/pmod/pmod_pwm.py.

def generate(self, period, duty_cycle):
        # ...
        if period not in range(1, 65536):
            raise ValueError("Valid tone period is between 1 and 65536.")
        if duty_cycle not in range(1, 99):
            raise ValueError("Valid duty cycle is between 1 and 99.")
       # ...

On Jupyter Lab, it fails if we execute:

pwm_1.generate(65536,25)

Error message:

/usr/local/share/pynq-venv/lib/python3.8/site-packages/pynq/lib/pmod/pmod_pwm.py in generate(self, period, duty_cycle)
     95         """
     96         if period not in range(1, 65536):
---> 97             raise ValueError("Valid tone period is between 1 and 65536.")
     98         if duty_cycle not in range(1, 99):
     99             raise ValueError("Valid duty cycle is between 1 and 99.")

ValueError: Valid tone period is between 1 and 65536.

Another failed point:

pwm_1.generate(10,99)

Caused:

/usr/local/share/pynq-venv/lib/python3.8/site-packages/pynq/lib/pmod/pmod_pwm.py in generate(self, period, duty_cycle)
     97             raise ValueError("Valid tone period is between 1 and 65536.")
     98         if duty_cycle not in range(1, 99):
---> 99             raise ValueError("Valid duty cycle is between 1 and 99.")
    100 
    101         self.microblaze.write_mailbox(0, [period, duty_cycle])

ValueError: Valid duty cycle is between 1 and 99.

Best regards, Hai Pham

mariodruiz commented 1 year ago

Hi @haipnh,

We appreciate if you can contribute the solution to this issue.

Mario

skalade commented 4 months ago

Looks like working as intended, python range does not include the last number.