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. python的globals()

    以字典的形式返回当前位置的全局变量

  2. 266A

    #include <iostream> #include <string> using namespace std; int main() { string stones; i ...

  3. Python 数据结构 树

    什么是树 数是一种抽象的数据类型(ADT)或是作这种抽象数据类型的数据结构,用来模拟具有树状结构性质的数据集合,它是由n(n>1)的有限个节点和节点之间的边组成的一个有层次关系的集合. 树的组成 ...

  4. Windows下解压分卷压缩方法

    各种压缩分卷格式 rar分卷格式是*.part1.rar,*.part2.rar 等等. 360分卷压缩出来的文件的名字是*.zip.001.*.zip002 等等. WinZip分卷压缩出来的文件名 ...

  5. openvpn-LDAP验证

    安装openvpn ldap apt-get install openvpn-auth-ldap mkdir -p /etc/openvpn/auth/ cp /usr/share/doc/openv ...

  6. VS Code的golang开发配置 之 代码提示

    之前用VS Code的时候,发现自己的代码的提示一直不好,换用JetBrain的Goland的代码提示是好了,但是比较占用资源.在网上找了一些资料,发现很多人也是遇到第三方或者自己的代码无法提示的情况 ...

  7. Count(广工14届竞赛)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6470 这道题目题解就扔了个矩阵快速幂啥都没写.....这题解是太看得懂我这个弱鸡了. 既然是矩阵快速幂 ...

  8. ASP.NET MVC5+EF6+EasyUI 后台管理系统--系统权限及操作指引

    系列目录 1.权限包括菜单权限,按钮权限,数据权限 2.角色组和用户之间是多对多的关系,即多个用户可以拥有多个角色组,权限是拥有角色组的并集 1.菜单界面,菜单都是动态数据由模块管理进行设置 2.权限 ...

  9. (转载)Spring定时任务的几种实现

    spring框架定时任务 一.分类 从实现的技术上来分类,目前主要有三种技术(或者说有三种产品): Java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerT ...

  10. HttpClient超时设置setConnectionTimeout和setSoTimeout

    http是基于TCP/IP进行通信的,tcp通过3次握手建立连接,并最终以4次挥手终止通信. 知乎上对三次握手和四次挥手有如下解释: 作者:知乎用户链接:https://www.zhihu.com/q ...