improve PLL fractional divider algorithm

This commit is contained in:
Jan Käberich 2025-08-17 19:37:10 +02:00
parent 66d5bdd91b
commit 8b44421ea3
7 changed files with 82 additions and 19 deletions

View file

@ -189,7 +189,10 @@ bool MAX2871::SetFrequency(uint64_t f) {
LOG_DEBUG("Looking for best fractional match");
float fraction = (float) rem_f / f_PFD;
auto approx = Algorithm::BestRationalApproximation(fraction, 4095);
Algorithm::RationalApproximation ratio;
ratio.num = rem_f;
ratio.denom = f_PFD;
auto approx = Algorithm::BestRationalApproximation(ratio, 4095);
if (approx.denom == approx.num) {
// got an impossible result due to floating point limitations(?)