right spindle supply short to gnd
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;
}
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
14:20 u16_MagicNumber is 0
in SensorPosition_Init
lb_IsStoredPositionValid = Spo_IsStoredTailgatePositionValid(aps_Inst);
and in Spo_IsStoredTailgatePositionValid:
if (C_SPO_POSITION_MAGIC_NUMBER == aps_Inst->ps_StoredPositionValues->u16_MagicNumber)
was not meeted.
i watch value of aps_Inst->ps_StoredPositionValues->u16_MagicNumber is 0.
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
2019/4/16-9:30 b_MinUBatInputOK
b_MinUBatInputOK direct assigner is SensorHall_ReadRequiredPorts
2019/4/16-10:30
sequence of SensorHall_ReadRequiredPorts being called:
runSensorHall_CycleCall()-->runSensorHall_Inst_CycleCall(Secondary)-->SensorHall_ReadRequiredPorts()
13:58 b_MinUBatInputOK
b_MinUBatInputOK track should be checked before b_HallSupplyStable
in SensorHall_ReadRequiredPorts():
aps_RequiredPorts->b_MinUBatInputOK = ( (FALSE == l_Env_ErrorFlags.s_Bits.b_MinUBatUndershot ) ||
(FALSE == l_Env_ErrorFlags.s_Bits.b_MinUBatBackupUndershot) )
? TRUE : FALSE;
15:36 b_MinUBatInputOK are both TRUE
watch from SensorHall_ReadRequiredPorts()
b_MinUBatInputOK are both TRUE for primary and secondary Hall Sensor
( b_MinUBatUndershot and b_MinUBatBackupUndershot are assigned
in Environment.c
in Env_DetermineUBatUnderVoltageErrorFlags() )
b_HallSupplyStable
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;
this comment seems this code was wrote only for the old board.
13:40 b_UHallStable be assigned in Pmg_UpdateHCOMStableFlag
a little more deduction without experience today :)
found how b_UHallStable becomes FALSE:
runPowerManager_CycleCall()-->Pmg_EvaluateFlagsAndSetFlagsAndOutputs()-->Pmg_SetOutputsAndStableFlags()-->Pmg_UpdateHCOMStableFlag()
...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?
最新文章
- Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
- html5 postMessage解决跨域、跨窗口消息传递
- VTK初学一,a Mesh from vtkImageData
- (转)android中颜色矩阵colormatrix
- 阿里云的NoSQL存储服务OTS的应用分析
- thinkphp对数据库操作有哪些内置函数
- RAID,mdadm(笔记)
- 原生Js操作DOM
- MFC中使用SDL播放音频没有声音的解决方法
- for、for / in循环
- 【P2303】Longge的问题
- 机器学习三剑客之matplotlib 数据绘图展示
- 虚拟空间,malloc
- poj2699
- markdown简单常用语法
- hdu 5441 (2015长春网络赛E题 带权并查集 )
- Jquery ThickBox的使用
- 用户ID的代码生成
- ismember matlab
- BestCoder Round #39 解题报告
热门文章
- python的_thread模块来实现多线程(<;python核心编程例子>;)
- [py]python __file__ 与argv[0]
- centos 打包报错License for package Android SDK Build-Tools 25.0.3 not accepted
- Eclipse + Maven 安装配置
- Java中通过Class类获取Class对象的方法详解
- RCNN系列算法的发展
- eclipse显示xml提示
- Lua之table
- memory consistency
- 学习笔记<;1>;技术体系结构