Dear team:
When testing the project with the following code, my customer found that when a floating-point data is given to the parameter lBalanceBRFXn, the running result of the program is correct.
When a fixed-point data is given to the parameter lbalancebrfxn, the output result after the program runs is 0.
Here is the code:
#define lB0 16560587 #define lB1 -33075803 #define lB2 16560587 #define lA1 -33075803 #define lA2 16343958 long long lBalanceBRFXn; long long lBalanceBRFYn; long long lBalanceBRFXn_1; long long lBalanceBRFXn_2; long long lBalanceBRFYn_1; long long lBalanceBRFYn_2; lBalanceBRFYn = (lBalanceBRFXn * lB0)>>24 + (lBalanceBRFXn_1 * lB1)>>24 + (lBalanceBRFXn_2 * lB2)>>24 - (lBalanceBRFYn_1 *lA1)>>24 - (lBalanceBRFYn_2 * lA2)>>24; // lBalanceBRFYn_2 = lBalanceBRFYn_1; lBalanceBRFYn_1 = lBalanceBRFYn; lBalanceBRFXn_2 = lBalanceBRFXn_1; lBalanceBRFXn_1 = lBalanceBRFXn;
Best regards