Hello,
Edit: SDK4.01 Eabi/COF projects both have the same issue of inline estimator calls failing to access ROM functions.
I have attempted to unwind the SDK(FOC) eabi code as to choose several non-defined motors within functions in a C file via an external HID device. It was working up to the point that ROM estimator started to ignore the motor is ID (true) inline calls shown below. Oddly, only motorVars.Ls_d_H~ ~.Ls_q_H are being over written (0.0) just after userParams._Ls_d_H ~._Ls_q_H updated debug (yellow box). Even though the estimator is told motor has been ID via inline calls, estimator still tries to ID motor every time isLAB_07 speed control object.
Even if I comment global updates 2 estimator inductance motorVars.Ls_q_H ~.Ls_d_H bottom (labs.h), still being over written 0.0. This seems to be an issue with the ROM code enabling motor ID switch by default and ignoring motor ID (true) inline calls flag so the controller is not being enabled or ever updated. Every time (motorVars.flagRunIdentAndOnLine) is enabled the estimator tries to ID the motor. Is there some way to stop od ID behavior or the Fast ROM library fixes this issue?
Note: Bypass ID flag or #define (user.h) are not being enabled by inline estimator calls I can find in the project. There are two user.c defines for motor ID process below, 2 inductance overloads being commented seem to be part of the reason estimator ignores motor ID (true). Also replaces motorVars.Ls_d_H ~Ls_q_H as 0x0. Happen in debug view immediately after motorVars.~ have been triggered via exported structs of userParams.~
Why is the ROM estimator taking control away from the application is the even bigger question?
(user.c) //userParams.motor_Ls_d_H = (float32_t)1.0e-6;
(user.c) //userParams.motor_Ls_q_H = (float32_t)1.0e-6;
/* set the userParam flag */
userParams.flag_bypassMotorId = true;
Inlines placed top of main.c isLAB_07:
//! \brief Sets the motor identified flag state in the estimator
//! \param[in] handle The estimator (EST) handle
//! \param[in] state The desired state, e.g. identified true
EST_setFlag_motorIdentified(estHandle, true);
//! \brief Gets the motor identified flag state in the estimator
//! \param[in] handle The estimator (EST) handle
//! \return The state of the motor identified flag
motorVars.flagMotorIdentified = EST_getFlag_motorIdentified(estHandle);