From 93cf35a7ba78b8abc3f6e3847433b6b9be4c6ade Mon Sep 17 00:00:00 2001 From: F5OEO Date: Thu, 23 Jul 2020 15:00:04 +0100 Subject: [PATCH] Fix for higher frequencies : 434MHz is ok --- src/gpio.cpp | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/gpio.cpp b/src/gpio.cpp index a070d29..308b830 100644 --- a/src/gpio.cpp +++ b/src/gpio.cpp @@ -213,7 +213,15 @@ int clkgpio::SetFrequency(double Frequency) double FloatMult=0; if(PllFixDivider==1) //Using PDIV thus frequency/2 - FloatMult = ((double)(CentralFrequency + Frequency) ) / ((double)(XOSC_FREQUENCY*2) * (1 - clk_ppm * 1e-6)); + { + if(pi_is_2711) + FloatMult = ((double)(CentralFrequency + Frequency)*2 ) / ((double)(XOSC_FREQUENCY) * (1 - clk_ppm * 1e-6)); + else + { + FloatMult = ((double)(CentralFrequency + Frequency) ) / ((double)(XOSC_FREQUENCY*2) * (1 - clk_ppm * 1e-6)); + } + + } else { if(pi_is_2711) @@ -253,7 +261,15 @@ uint32_t clkgpio::GetMasterFrac(double Frequency) { double FloatMult=0; if((PllFixDivider==1))//There is no Prediv on Pi4 //Using PDIV thus frequency/2 - FloatMult = ((double)(CentralFrequency + Frequency) ) / ((double)(XOSC_FREQUENCY*2) * (1 - clk_ppm * 1e-6)); + { + if(pi_is_2711) // No PDIV on pi4 + FloatMult = ((double)(CentralFrequency + Frequency) ) / ((double)(XOSC_FREQUENCY) * (1 - clk_ppm * 1e-6)); + else + { + FloatMult = ((double)(CentralFrequency + Frequency) ) / ((double)(XOSC_FREQUENCY*2) * (1 - clk_ppm * 1e-6)); + } + + } else { if(pi_is_2711) @@ -432,7 +448,7 @@ int clkgpio::SetCenterFrequency(uint64_t Frequency, int Bandwidth) } else { - ana[1]|=(0<<14); // No use prediv means Frequency + ana[1]|=(0<<14); // No use prediv means Frequenc } /* * ANA register setup is done as a series of writes to