hardware guy found that the R1004 lead to this error, but this error should not be checked, because the secondary hall spindle is not used.
2019/4/15-13:00 b_HallcomShortGnd = lb_SetError
use debugger for the board without R1004, it ran into
Dia_HandleErrorsSensorHallSecondary,
if (FALSE != b_DIAGNOSTIC_HANDLE_STATUS( ID_SPINDLE2_HALLCOM_SHORT_GND ) )
{
lps_ErrorResultField->b_HallcomShortGnd = lb_SetError;
}
#define b_DIAGNOSTIC_HANDLE_STATUS(Id) Dia_HandleErrorStatus( aps_Error, \
&C_U8_CONFIG_PTR_DTC_APPL_ERR_CONFIG[Id],\
&lb_SetError )
#define C_U8_CONFIG_PTR_DTC_APPL_ERR_CONFIG (ms_DiagnosisDtcConfig.ps_DtcApplErrConfig)
if( 0 != aps_Inst->s_ErrorHall.u16_State )
{ /* send error only in case of changes !! */
SCI_Write_HallSensor_HallSensorError (&aps_Inst->s_ErrorHall , ae_Instance);
}
Dia_BufferAllReceivedErrors
SCI_Read_HallSensor_Error (&ls_Error, E_SHA_HALL_SECONDARY); if (E_SHA_HALL_MAX_NUM_OF_HALLS > ae_Inst) { *(aps_Error) = gs_Sci_Data_Buffer.SensorHallErr[ae_Inst].s_Error; }
Dia_BufferReceivedErrors ( ls_Error.u16_State,
ls_Error.u16_Error,
DTC_BUFFER_Dia_HandleErrorsSensorHallSecondary );
2019/4/15-13:20 //lps_ErrorResultField->b_HallcomShortGnd
comment //lps_ErrorResultField->b_HallcomShortGnd = lb_SetError;
and then found invalid position from diagnosis-last interrupt reason read
18:18 b_MinUBatInputOK and b_Hall... different in new/old board
in SensorHall.c
in SenserHall_Diagnostic()
this if condition was not meeted in the board with R1004, but meeted in the old board
if( (FALSE != aps_ReqPorts->b_MinUBatInputOK ) &&
(FALSE != aps_ReqPorts->b_HallSupplyStable ) &&
(FALSE != aps_ReqPorts->b_HallSignalStable ) )
watched the 3 variable are all TRUE for Primary and Secondary for old board
but when R1004 is removed, only b_MinUBatInputOK is TRUE, the other 2 are FALSE
b_MinUBatInputOK are both TRUE for primary and secondary Hall Sensor
( b_MinUBatUndershot and b_MinUBatBackupUndershot are assigned
in Environment.c
in Env_DetermineUBatUnderVoltageErrorFlags() )
11:29 b_UHallStable, b_UHallRangeValid and b_HallSupplyStable
b_HallSupplyStable is determined by b_UHallRangeValid
aps_RequiredPorts->b_HallSupplyStable = ( (FALSE != ms_SensorHallConfigVar.b_UHallRangeValid) &&
(FALSE == ms_SensorHallConfigVar.b_UHallSwitchedOffByShortToGnd [ae_Instance]) )
? TRUE : FALSE;
b_UHallRangeValid is determined by b_UHallStable
in SensorHall_ReadRequiredPorts:
if (FALSE != l_Pmg_StableFlags.s_Bits.b_UHallStable)
{
ms_SensorHallConfigVar.b_UHallRangeValid = TRUE;
}
13:10 b_UHallStable be assigned in Pmg_UpdateHCOMStableFlag
b_UHallRangeValid is assigned from b_UHallStable
in PowerManager_cfg.c
Pmg_UpdateHCOMStableFlag()
/* Hall Supply A and B shall behavior in the same way, not working independantly*/
aps_ProvidedPorts->u_StableFlags.s_Bits.b_UHallStable = FALSE;
16:16 b_HallSupplyB is 0
watched:
aps_ProvidedPorts->u_StateOfControlledOutputs.s_Bits.b_HallSupplyB
is 0 when R1004 is removed.
in Pmg_UpdateHCOMStableFlag():
if( (FALSE != aps_ProvidedPorts->u_StateOfControlledOutputs.s_Bits.b_HallSupplyA)
&& (FALSE != aps_ProvidedPorts->u_StateOfControlledOutputs.s_Bits.b_HallSupplyB) )
{
SCI_Call_Bsw_SetDigitalOutput(E_BSW_DO_SUP_HCOM_A, TRUE);
SCI_Call_Bsw_SetDigitalOutput(E_BSW_DO_SUP_HCOM_B, TRUE);
SCI_Timer_Load(C_S_PMG_TIMER.e_HallStable, as_Par.u16_UHallStableDelayTime);
}
else
{
SCI_Call_Bsw_SetDigitalOutput(E_BSW_DO_SUP_HCOM_A, FALSE);
SCI_Call_Bsw_SetDigitalOutput(E_BSW_DO_SUP_HCOM_B, FALSE);
aps_ProvidedPorts->u_StableFlags.s_Bits.b_UHallStable = FALSE;
}
16:30
try code:
SensorHall_ReadRequiredPorts()
aps_RequiredPorts->b_HallSupplyStable =
Pmg_UpdateHCOMStableFlag()
aps_ProvidedPorts->u_StableFlags.s_Bits.b_UHallStable =
result: left spindle hall supply short to gnd
b_MinUBatInputOK, b_HallSupplyStable and b_HallSignalStable are all TRUE for both Primary and Secondary.
18:27
watch in SensorHall_Diagnostic
aps_ReqPorts->u16_HallSupplyVoltage is 0 for both Primary and Secondary
18:28
make it run OK when comment
//SensorHall_Diagnostic (aps_Inst, aps_ReqPorts);
so that it will diagnostic none.
Question:
why diagnosis cannot get the right hall voltage?
19:20
in Sci_loHwAbMapping.cfg:
DIGITAL_OUTPUT_CFG ( E_BSW_DO_SUP_HCOM_A , BSWIF_DO_SBC_SUP_HCOM_GROUP_A )
in Bswif.c
{BSWIF_DO_SBC_SUP_HCOM_GROUP_A, SBC_DO_OUT1 },
One Day Later
2019/4/18--10:15
reality, only //SensorHall_Diagnostic control the error
todo:
why there is error? how to make it OK keeping diagnosis?