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?

最新文章

  1. Hadoop学习笔记—20.网站日志分析项目案例(二)数据清洗
  2. html5 postMessage解决跨域、跨窗口消息传递
  3. VTK初学一,a Mesh from vtkImageData
  4. (转)android中颜色矩阵colormatrix
  5. 阿里云的NoSQL存储服务OTS的应用分析
  6. thinkphp对数据库操作有哪些内置函数
  7. RAID,mdadm(笔记)
  8. 原生Js操作DOM
  9. MFC中使用SDL播放音频没有声音的解决方法
  10. for、for / in循环
  11. 【P2303】Longge的问题
  12. 机器学习三剑客之matplotlib 数据绘图展示
  13. 虚拟空间,malloc
  14. poj2699
  15. markdown简单常用语法
  16. hdu 5441 (2015长春网络赛E题 带权并查集 )
  17. Jquery ThickBox的使用
  18. 用户ID的代码生成
  19. ismember matlab
  20. BestCoder Round #39 解题报告

热门文章

  1. python的_thread模块来实现多线程(<python核心编程例子>)
  2. [py]python __file__ 与argv[0]
  3. centos 打包报错License for package Android SDK Build-Tools 25.0.3 not accepted
  4. Eclipse + Maven 安装配置
  5. Java中通过Class类获取Class对象的方法详解
  6. RCNN系列算法的发展
  7. eclipse显示xml提示
  8. Lua之table
  9. memory consistency
  10. 学习笔记<1>技术体系结构