Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Correct PWM frequency prescale computation #59

Merged
merged 1 commit into from
Jan 2, 2024
Merged

Conversation

bdlucas1
Copy link
Contributor

Assuming this datasheet https://www.digikey.be/htmldatasheets/production/1640697/0/0/1/pca9685-datasheet.html#pf19 is correct, the prescale value computation is off by one. This results in the incorrect PWM frequency being selected, and the incorrect frequency being reported on reading back the frequency field. For example

  • requesting a PWM frequency of the maximum value supported by the chip of 1.5 kHz results in an actual PWM frequency of 1.2 kHz (per the forumula in the datasheet, and verified by oscilloscope), and the value reported by reading the frequency field is also the incorrect value of 1.5 kHz.
  • requesting a PWM frequency of 2 kHz, outside the allowed range, results in an actual PWM frequency of the maximum 1.5 kHz, but 2 kHz is incorrectly reported when the frequency is read back.

Assuming this datasheet https://www.digikey.be/htmldatasheets/production/1640697/0/0/1/pca9685-datasheet.html#pf19 is correct, the prescale value computation is off by one. Prior to this change a PWM frequency of about 2 kHz could be set, and would be reported. After this change a maximum PWM frequency of 1526 Hz is accepted and reported, consistent with the datasheet.
@tekktrik tekktrik requested a review from a team January 2, 2024 17:54
Copy link
Member

@jepler jepler left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems to match the datasheet & arduino library. thanks.

@jepler jepler merged commit f2dd719 into adafruit:main Jan 2, 2024
1 check passed
adafruit-adabot added a commit to adafruit/Adafruit_CircuitPython_Bundle that referenced this pull request Jan 9, 2024
Updating https://github.com/adafruit/Adafruit_CircuitPython_24LC32 to 1.1.0 from 1.0.12:
  > Merge pull request adafruit/Adafruit_CircuitPython_24LC32#23 from TonyLHansen/main

Updating https://github.com/adafruit/Adafruit_CircuitPython_ADT7410 to 2.0.0 from 1.3.13:
  > Merge pull request adafruit/Adafruit_CircuitPython_ADT7410#24 from jposada202020/improving_lib

Updating https://github.com/adafruit/Adafruit_CircuitPython_CLUE to 3.1.0 from 3.0.17:
  > Merge pull request adafruit/Adafruit_CircuitPython_CLUE#61 from prcutler/root-group-fix

Updating https://github.com/adafruit/Adafruit_CircuitPython_PCA9685 to 3.4.14 from 3.4.13:
  > Merge pull request adafruit/Adafruit_CircuitPython_PCA9685#59 from bdlucas1/main

Updating https://github.com/adafruit/Adafruit_CircuitPython_AdafruitIO to 5.8.1 from 5.8.0:
  > Merge pull request adafruit/Adafruit_CircuitPython_AdafruitIO#114 from kavinaidoo/main

Updating https://github.com/adafruit/Adafruit_CircuitPython_asyncio to 1.3.0 from 1.2.2:
  > Merge pull request adafruit/Adafruit_CircuitPython_asyncio#59 from imnotjames/chore/optional-traceback

Updating https://github.com/adafruit/Adafruit_CircuitPython_PyCamera to 0.0.7 from 0.0.6:
  > Merge pull request adafruit/Adafruit_CircuitPython_PyCamera#15 from adafruit/enhancements
  > Merge pull request adafruit/Adafruit_CircuitPython_PyCamera#13 from brentru/allow-jpg-save

Updating https://github.com/adafruit/Adafruit_CircuitPython_TemplateEngine to 1.1.0 from 1.0.1:
  > Merge pull request adafruit/Adafruit_CircuitPython_TemplateEngine#2 from michalpokusa/removing-8-x-x-re-module-bug-workarounds

Updating https://github.com/adafruit/Adafruit_CircuitPython_Bundle/circuitpython_library_list.md to NA from NA:
  > Updated download stats for the libraries
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants