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?

right spindle supply short to gnd的更多相关文章

  1. right spindle supply short to gnd-- compact version

    hardware guy found that the R1004 lead to this error, but this error should not be checked, because ...

  2. 游戏引擎架构 (Jason Gregory 著)

    第一部分 基础 第1章 导论 (已看) 第2章 专业工具 (已看) 第3章 游戏软件工程基础 (已看) 第4章 游戏所需的三维数学 (已看) 第二部分 低阶引擎系统 第5章 游戏支持系统 (已看) 第 ...

  3. Adding Digital control to Dual tracking LM317 / LM337 Bench supply

    Adding Digital control to Dual tracking LM317 / LM337 Bench supply I've been working on my own idea ...

  4. Programmable current source requires no power supply

    Engineering labs are usually equipped with various power supplies, voltmeters, function generators, ...

  5. JAVA 各种数值类型最大值和最小值 Int, short, char, long, float,&nbs

    转载地址:http://blog.sina.com.cn/s/blog_5eab3d430101fdv6.html 代码片段: fmax = Float.MAX_VALUE; fmin = Float ...

  6. EntityFramework 7 smallint short 奇怪问题(已解决)

    在使用 EF7 进行条件查询的时候,遇到一个很奇怪的问题,不知道 EF 其他版本有没有这种情况,怎么说呢?一句话描述不清楚,具体请看下面内容. 问题场景 BloggingContext 配置代码: u ...

  7. plist文件里的"Bundle versions string, short" 跟 "Bundle version" 的区别及作用

    Bundle versions string, short:用于itunes上显示的版本号,即对外的版本,一般除了版本迭代外,不能随意更改. Bundle version:内部项目管理的版本号,是给程 ...

  8. c# unchecked关键字。byte 合并short

    参考MSDN 代码: public class BytesOperate { /// <summary> /// 计算校验和,SUM /// </summary> public ...

  9. C# 与数据库中字段类型 Int16(short), Int32(int), Int64(long)的取值范围、区别 。string长度

    一开始看到Int16, Int32, Int64这三种类型就觉得有点怪, 为什么要整个数字结尾的, 挺怪的. 昨天互相想到, ms这么干就是想让大家一眼就知道这个数据类型占多大空间吧. Int8, 等 ...

随机推荐

  1. LNMP安装目录及配置文件

    LNMP安装目录及配置文件位置 LNMP相关软件安装目录Nginx 目录: /usr/local/nginx/MySQL 目录 : /usr/local/mysql/MySQL数据库所在目录:/usr ...

  2. dll相关总结

    1.动态链接库的使用有两种方式,一种是显式调用.一种是隐式调用. (1) 显式调用:使用LoadLibrary载入动态链接库.使用GetProcAddress获取某函数地址. (2) 隐式调用:可以使 ...

  3. CentOS里alias命令

    alias命令 功能描述:我们在进行系统的管理工作一定会有一些我们经常固定使用,但又很长的命令.那我们可以给这些这一长串的命令起一个别名.之后还需要这一长串命令时就可以直接以别名来替代了.系统中已经有 ...

  4. 使用Python自带difflib模块进行文件内容差异对比

    difflib_text.py #!/usr/bin/python import difflib import sys try: textfile1=sys.argv[1] textfile2=sys ...

  5. sort(排序) qsort(快排) bsearch(二分查找)

    sort: 一.对int类型数组排序 int a[100]; int cmp ( int a , int b ) //不必强制转换 { return a < b;//升序排列. } sort ( ...

  6. [LeetCode] 581. Shortest Unsorted Continuous Subarray_Easy tag: Sort, Stack

    Given an integer array, you need to find one continuous subarray that if you only sort this subarray ...

  7. java json Gson

    引入 Gson 到 pom.xml <!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --> <de ...

  8. vue中使用hotcss--stylus

    页面中一直闪动这个. 后面改成scss后还是这样.还不知道原因

  9. cocos2d-x C++ 判断当前平台宏定义大全

    /**************************************************************************** Copyright (c) 2010-201 ...

  10. Lua 与 OC 相互调用

    本文主要讲如何完成lua和object-c的相互调用.       lua是一种脚本语言,可以方便的移植到各种宿主语言中,并且可以支持热更新,在游戏开发中也能当做主要的语言来编写游戏的逻辑,但是要接入 ...