The following gives the incorrect answer for lfp which should be 0x004E47AE but i get a trucated 0x000047AE. If I change the declaration of "long lfp" to "volatile long lfp" it gives me the correct answer. Clue: with the original declaration lfp is assigned to a register, with the volatile it get stored in memory.
float z, f, fp; int eb; long lfp;
z = log(setpoint) / log(2); eb = (int)z + 0x7F; f = setpoint / 16; fp = (f-1) * 8388608; // 2 << 23 lfp = (long)(fp);
Is this a bug?
I am using CCS v5.1.0.09000, MSP430 Compiler Tools v4.0.0, optimization is set to 0
Thank you, Don