在调试RL78单片机的时候,发现一个问题,一个驱动IO无法置零。
但是插入断点发现是可以的,解决步骤:
处理方法:在判断IO驱动的时候,设置判断条件,一旦发现问题关闭IO,则不再判断,因为Io为0会触发条件变为正常,改为下一次开关关闭再开启 才再次判断条件。
驱动代码:
#define CAN_DIAG_Drive(x) ((stDiag[x].Counter < DIAG_TIMEOUT)|(stDiag[x].Diag <= DIAG_STAT_OPEN))
i = DIAG_CH6;
if(bSW8_CZ && b15PowerOK && !Is_Mask_Flash_CMD)//侧照灯
{
pIO_CTRL6 = CAN_DIAG_Drive(i);
stDiag[i].Out = 1;
}else
{
pIO_CTRL6 = 0;
memset(&stDiag[i],0,sizeof(ST_DIAG));
}
stDiag[x].Diag 诊断状态的获取:
if(stDiag[i].Out && (stDiag[i].Diag != DIAG_STAT_SHORT2GND))//already short ,no check,until turn off switch and turn on again thar will reset diag data to ok
{
if(stDiag[i].Counter < DIAG_TIMEOUT)
{
stDiag[i].Counter++;
}else
...............
大部分应该是配置出问题,好好检查一下
引用: huo_hu 发表于 2022-1-14 20:25 还是找找根本原因吧,这样凑合不行
谢谢,根本问题已解决,就是应用层问题所致。
A:发现问题--->关闭IO--->检测相应条件符合,打开IO---->导致问题---->A
引用: jinandawei 发表于 2022-1-17 15:28 谢谢,根本问题已解决,就是应用层问题所致。 A:发现问题--->关闭IO--->检测相应条件符合,打开IO- ...
没看明白这个逻辑。