@@ -29,12 +29,12 @@ bool SparkFun_5P49V60::begin(TwoWire &wirePort)
2929void SparkFun_5P49V60::setVcoFrequency (float freq){
3030
3131 // Convert to MHz
32- _vco_freq = static_cast < uint16_t >( freq) ;
32+ _vco_freq = freq;
3333 float pll_divider = _vco_freq/_clock_freq;
3434 // Seperate the divider into the whole number and decimal.
3535 uint16_t int_portion = static_cast <uint8_t >(pll_divider);
3636 float decimal = fmod (pll_divider, int_portion);
37- uint32_t fract_portion = static_cast <uint32_t >(fract_portion * pow (2 ,24 ));
37+ uint32_t fract_portion = static_cast <uint32_t >(decimal * pow (2 ,24 ));
3838
3939 setPllFeedbackIntDiv (int_portion);
4040 setPllFeedBackFractDiv (fract_portion);
@@ -47,9 +47,10 @@ void SparkFun_5P49V60::setVcoFrequency(float freq){
4747void SparkFun_5P49V60::setClockOneFreq (float freq){
4848
4949 float division = (_vco_freq/2 )/freq;
50+
5051 uint32_t int_portion = static_cast <uint32_t >(division);
5152 float decimal = fmod (division, int_portion);
52- uint32_t frac_portion = static_cast <uint32_t >(decimal/ pow (2.0 ,24.0 ));
53+ uint32_t frac_portion = static_cast <uint32_t >(pow (2.0 ,24.0 ) * decimal );
5354
5455 setIntDivOutOne (int_portion);
5556 setFractDivFodOne (frac_portion);
@@ -63,7 +64,7 @@ void SparkFun_5P49V60::setClockTwoFreq(float freq){
6364 float division = (_vco_freq/2 )/freq;
6465 uint32_t int_portion = static_cast <uint32_t >(division);
6566 float decimal = fmod (division, int_portion);
66- uint32_t frac_portion = static_cast <uint32_t >(decimal/ pow (2.0 ,24.0 ));
67+ uint32_t frac_portion = static_cast <uint32_t >(decimal * pow (2.0 ,24.0 ));
6768
6869 setIntDivOutTwo (int_portion);
6970 setFractDivFodTwo (frac_portion);
@@ -78,7 +79,7 @@ void SparkFun_5P49V60::setClockThrFreq(float freq){
7879 float division = (_vco_freq/2 )/freq;
7980 uint32_t int_portion = static_cast <uint32_t >(division);
8081 float decimal = fmod (division, int_portion);
81- uint32_t frac_portion = static_cast <uint32_t >(decimal/ pow (2.0 ,24.0 ));
82+ uint32_t frac_portion = static_cast <uint32_t >(decimal * pow (2.0 ,24.0 ));
8283
8384 setIntDivOutThree (int_portion);
8485 setFractDivFodThr (frac_portion);
@@ -93,7 +94,7 @@ void SparkFun_5P49V60::setClockFourFreq(float freq){
9394 float division = (_vco_freq/2 )/freq;
9495 uint32_t int_portion = static_cast <uint32_t >(division);
9596 float decimal = fmod (division, int_portion);
96- uint32_t frac_portion = static_cast <uint32_t >(decimal/ pow (2.0 ,24.0 ));
97+ uint32_t frac_portion = static_cast <uint32_t >(decimal * pow (2.0 ,24.0 ));
9798
9899 setIntDivOutFour (int_portion);
99100 setFractDivFodFour (frac_portion);
0 commit comments