regarding the signed fraction format, I see in the document -1.0 6000 RPM Reverse and 0.99997 6000 RPM Forward, but -1 is 6000 RPM reverse then ideally +1 should be 6000 RPM Forward. Am i correct? I downloaded the source code it seems to be ok I mean 6000 Rpm reverse and Forward are matching.
1. How 0x7F97 is 0.996805 i tried hard to understand but not able to decode.
My analysis is something like this. I am assuming it is 16 bit and Q15 Format. 1 Integer and 15 Fractional bits
0x7F97
B15 is signed bit,
(2^-1) + (2^-2) + (2^-3)+
(2^-4)+(2^-5)+(2^-6)+(2^-7)+
(2^-8)+2(^-11)+
(2^-13)+(2^-14)+(2^-15) = 0.996795654 but it does not match with 0.996805.
2. The other related question why he should select 32663?
They use .996795654 for .996805 because you can't get closer to the actual value with only 15-bits. You would have to have an extra 4-bits minimum to obtain a result that is correct to the 6th fractional digit (you should have 6-bits more if you want to guarantee it will be correct to the 6th digit.)
Calculate 0x7F975 = 0.996805191
You can think of it this way 2^-21 = 0.00000047684 six 0's followed by a digit, so any number with that bit set will have at least 6 digits that are correct in the number as you are now contributing to a 7th bit to get the value closer to the 6 fractional bit number.