12-22-2021 05:35 AM
Hi,
I use the BMA456 sensor.
I would like to use the API bma4_perform_accel_foc, for calculating the foc for all 3 axis - x,y,z.
(I got a code from git hub)
The API recieves the struct : bma4_accel_foc_g_value.
I thought to declare - const struct bma4_accel_foc_g_value accel_g_value = {1, 1, 1, 0}, so all three axis will be calculated, but in the API code I see the following condition :
if (((ABS(accel_g_value->x) + ABS(accel_g_value->y) + ABS(accel_g_value->z)) == 1) &&
((accel_g_value->sign == 1) || (accel_g_value->sign == 0)))
which makes me think I should call one axis at a time (also in related APIs it seems like that).
but if so - will it be saved corrctly at the NVM? won't each call run over the previous values?
I don't understand what is the proper input to the accel_g_value
Thanks in advance,
Solved! Go to Solution.
01-04-2022 08:30 AM - edited 01-04-2022 08:32 AM
Hi BSTRobin,
I tested the FOC with default range(4g) and accel_g_value are {1, 0, 0, 1}
But after FOC, the acc.x value didn't reach to '0'.
I don't think that the purpose of FOC is to make acc value to '0'. It can find the axis of gravity and make it to 8192. Am I correct?
I added some debug message in perform_accel_foc function as below picture.
And then I got a debug message as below.
Do you think, the FOC function working well on my device?
I'd like to know your opinion.
Best Regards,
Andy
01-06-2022 01:42 AM
Hi BSTRobin,
Could you please reply the my previous question?
I'm waiting for your answer.
Best Regards,
Andy
01-06-2022 03:19 AM
Hello Andy_253,
Let us to further check and give you feedback later.
01-06-2022 09:10 AM
Hello Andy_253,
From your log data, FOC run well on your side.
For your test, X axis should be close to 8192 after FOC, not should be 0.
01-06-2022 09:37 AM
Thanks for your confirmation.
Best Regards,
Andy