Other Parts Discussed in Thread: TMS320F2812
Hi,
Have been struggling to get IQMath functions executed on TMS320F2812 DSP. When we call IQn function by passing a const (Ex. 0.5), then we get correct results. But if we call the same funciton IQn by passing a float variable, then we dont get the right result. Below find snippet of code and in comments the result observed. Can some one point me to the problem source for this behavior. Below we have listed the results for 0.56432145L & 1.0323232 .
//Version of CCS3.3 Platinum
//Version of rts2800_ml.lib: Tried both options: Lib version 5.2 from CCS4 & rts lib form CCS3.3 Platinum installation
//IQMath Lib Version: Tried V1.5a and Lib V1.4
float FltVar;
long LngVar;
FltVar = 0.56432145L;
LngVar = _IQ1(FltVar); // result = 0x00000000
LngVar = _IQ1(0.56432145L); // result = 0x00000001
LngVar = _IQ2(FltVar); // result = 0x00000000
LngVar = _IQ2(0.56432145L); // result = 0x00000002
LngVar = _IQ3(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ3(0.56432145L); // result = 0x00000004
LngVar = _IQ4(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ4(0.56432145L); // result = 0x00000009
LngVar = _IQ5(FltVar); // result = 0x00000000
LngVar = _IQ5(0.56432145L); // result = 0x00000012
LngVar = _IQ6(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ6(0.56432145L); // result = 0x00000024
LngVar = _IQ7(FltVar); // result = 0x80000000
LngVar = _IQ7(0.56432145L); // result = 0x00000048
LngVar = _IQ8(FltVar); // result = 0x00000000
LngVar = _IQ8(0.56432145L); // result = 0x00000090
LngVar = _IQ9(FltVar); // result = 0x00000000
LngVar = _IQ9(0.56432145L); // result = 0x00000120
LngVar = _IQ10(FltVar); // result = 0x00000000
LngVar = _IQ10(0.56432145L); // result = 0x00000241
LngVar = _IQ11(FltVar); // result = 0x00000000
LngVar = _IQ11(0.56432145L); // result = 0x00000483
LngVar = _IQ12(FltVar); // result = 0x80000000
LngVar = _IQ12(0.56432145L); // result = 0x00000907
LngVar = _IQ13(FltVar); // result = 0x00000000
LngVar = _IQ13(0.56432145L); // result = 0x0000120E
LngVar = _IQ14(FltVar); // result = 0x00000000
LngVar = _IQ14(0.56432145L); // result = 0x0000241D
LngVar = _IQ15(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ15(0.56432145L); // result = 0x0000483B
LngVar = _IQ16(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ16(0.56432145L); // result = 0x00009077
LngVar = _IQ17(FltVar); // result = 0x00000000
LngVar = _IQ17(0.56432145L); // result = 0x000120EE
LngVar = _IQ18(FltVar); // result = 0x80000000
LngVar = _IQ18(0.56432145L); // result = 0x000241DD
LngVar = _IQ19(FltVar); // result = 0x80000000
LngVar = _IQ19(0.56432145L); // result = 0x000483BA
LngVar = _IQ20(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ20(0.56432145L); // result = 0x00090775
LngVar = _IQ21(FltVar); // result = 0x00000000
LngVar = _IQ21(0.56432145L); // result = 0x00120EEB
LngVar = _IQ22(FltVar); // result = 0x80000000
LngVar = _IQ22(0.56432145L); // result = 0x00241DD7
LngVar = _IQ23(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ23(0.56432145L); // result = 0x00483BAF
LngVar = _IQ24(FltVar); // result = 0x80000000
LngVar = _IQ24(0.56432145L); // result = 0x0090775E
LngVar = _IQ25(FltVar); // result = 0x00000000
LngVar = _IQ25(0.56432145L); // result = 0x0120EEBD
LngVar = _IQ26(FltVar); // result = 0x00000000
LngVar = _IQ26(0.56432145L); // result = 0x0241DD7B
LngVar = _IQ27(FltVar); // result = 0x00000000
LngVar = _IQ27(0.56432145L); // result = 0x0483BAF6
LngVar = _IQ28(FltVar); // result = 0x00000000
LngVar = _IQ28(0.56432145L); // result = 0x090775ED
LngVar = _IQ29(FltVar); // result = 0x80000000
LngVar = _IQ29(0.56432145L); // result = 0x120EEBDB
LngVar = _IQ30(FltVar); // result = 0x00000000
LngVar = _IQ30(0.56432145L); // result = 0x241DD7B7
FltVar = 1.0323232;
LngVar = _IQ1(FltVar); // result = 0x00000000
LngVar = _IQ1(1.0323232); // result = 0x00000002
LngVar = _IQ2(FltVar); // result = 0x00000000
LngVar = _IQ2(1.0323232); // result = 0x00000004
LngVar = _IQ3(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ3(1.0323232); // result = 0x00000008
LngVar = _IQ4(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ4(1.0323232); // result = 0x00000010
LngVar = _IQ5(FltVar); // result = 0x00000000
LngVar = _IQ5(1.0323232); // result = 0x00000021
LngVar = _IQ6(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ6(1.0323232); // result = 0x00000042
LngVar = _IQ7(FltVar); // result = 0x80000000
LngVar = _IQ7(1.0323232); // result = 0x00000084
LngVar = _IQ8(FltVar); // result = 0x00000000
LngVar = _IQ8(1.0323232); // result = 0x00000108
LngVar = _IQ9(FltVar); // result = 0x00000000
LngVar = _IQ9(1.0323232); // result = 0x00000210
LngVar = _IQ10(FltVar); // result = 0x00000000
LngVar = _IQ10(1.0323232); // result = 0x00000421
LngVar = _IQ11(FltVar); // result = 0x00000000
LngVar = _IQ11(1.0323232); // result = 0x00000842
LngVar = _IQ12(FltVar); // result = 0x80000000
LngVar = _IQ12(1.0323232); // result = 0x00001084
LngVar = _IQ13(FltVar); // result = 0x00000000
LngVar = _IQ13(1.0323232); // result = 0x00002108
LngVar = _IQ14(FltVar); // result = 0x00000000
LngVar = _IQ14(1.0323232); // result = 0x00004211
LngVar = _IQ15(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ15(1.0323232); // result = 0x00008423
LngVar = _IQ16(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ16(1.0323232); // result = 0x00010846
LngVar = _IQ17(FltVar); // result = 0x00000000
LngVar = _IQ17(1.0323232); // result = 0x0002108C
LngVar = _IQ18(FltVar); // result = 0x80000000
LngVar = _IQ18(1.0323232); // result = 0x00042119
LngVar = _IQ19(FltVar); // result = 0x80000000
LngVar = _IQ19(1.0323232); // result = 0x00084232
LngVar = _IQ20(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ20(1.0323232); // result = 0x00108465
LngVar = _IQ21(FltVar); // result = 0x00000000
LngVar = _IQ21(1.0323232); // result = 0x002108CA
LngVar = _IQ22(FltVar); // result = 0x80000000
LngVar = _IQ22(1.0323232); // result = 0x00421195
LngVar = _IQ23(FltVar); // result = 0x7FFFFFFF
LngVar = _IQ23(1.0323232); // result = 0x0084232B
LngVar = _IQ24(FltVar); // result = 0x80000000
LngVar = _IQ24(1.0323232); // result = 0x01084656
LngVar = _IQ25(FltVar); // result = 0x00000000
LngVar = _IQ25(1.0323232); // result = 0x02108CAC
LngVar = _IQ26(FltVar); // result = 0x00000000
LngVar = _IQ26(1.0323232); // result = 0x04211958
LngVar = _IQ27(FltVar); // result = 0x00000000
LngVar = _IQ27(1.0323232); // result = 0x084232B0
LngVar = _IQ28(FltVar); // result = 0x00000000
LngVar = _IQ28(1.0323232); // result = 0x10846560
LngVar = _IQ29(FltVar); // result = 0x80000000
LngVar = _IQ29(1.0323232); // result = 0x2108CAC0
LngVar = _IQ30(FltVar); // result = 0x00000000
LngVar = _IQ30(1.0323232); // result = 0x42119580
Regards,
Subbu