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

Fix for #415 sin/cos integer overflow on 16-bit CPUs #416

Merged
merged 7 commits into from
Jul 18, 2024

Conversation

dekutree64
Copy link
Contributor

Terrible bug in the fast sin/cos added last year, resulting in rough sine waves and a spike from +1 to -1 at pi/2

Changes compared to the original pull request in the drivers repository simplefoc/Arduino-FOC-drivers#12
1. Added a version of init which turns the motor one revolution to find the center values of the sensors.
2. Moved the calls to analogRead into a weakly bound function ReadLinearHalls so it can be overridden with custom ADC code on platforms with poor analogRead performance.
3. Commented out the pinMode calls in init, which makes it possible to pass in ADC channel numbers for custom ReadLinearHalls to use without having to remap them every update.
4. Changed to use the much faster _atan2 function that was added to foc_utils recently.
5. Added examples.
Terrible bug in the fast sin/cos added last year, resulting in rough sine waves and a spike from +1 to -1 at pi/2
I thought I discarded this change after moving LinearHall back to drivers, but somehow it got included anyway
@askuric askuric linked an issue Jul 14, 2024 that may be closed by this pull request
@runger1101001 runger1101001 added this to the 2.3.4_Release milestone Jul 18, 2024
@runger1101001 runger1101001 added the bug Something isn't working label Jul 18, 2024
@runger1101001
Copy link
Member

Merging this before the next release.

@runger1101001 runger1101001 merged commit c27bc4b into simplefoc:dev Jul 18, 2024
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[BUG] sin/cos integer overflow on 16-bit CPUs
3 participants