643|5

9

帖子

0

资源

一粒金砂(中级)

IO无法置0 [复制链接]

在调试RL78单片机的时候,发现一个问题,一个驱动IO无法置零。

但是插入断点发现是可以的,解决步骤:

  • 因此怀疑是不是跟其他功能复用了呢:LCD、蜂鸣器等,检查结果没复用。
  • 测试IO管脚,发现实际是方波;
  • 最后发现是IO驱动的判断条件的问题,发现相应AD数据错误则会关闭IO,但是关闭IO后,相应AD数据就恢复了正常。

处理方法:在判断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
...............

 


回复

3979

帖子

0

资源

版主

还是找找根本原因吧,这样凑合不行

点评

谢谢,根本问题已解决,就是应用层问题所致。 A:发现问题--->关闭IO--->检测相应条件符合,打开IO---->导致问题---->A  详情 回复 发表于 5 天前

回复

187

帖子

0

资源

一粒金砂(高级)

路过群众,是不是有可能你的I/O口设置输入/输出的配置出了问题?


回复

1449

帖子

3

资源

版主

大部分应该是配置出问题,好好检查一下


回复

9

帖子

0

资源

一粒金砂(中级)

huo_hu 发表于 2022-1-14 20:25 还是找找根本原因吧,这样凑合不行

谢谢,根本问题已解决,就是应用层问题所致。
A:发现问题--->关闭IO--->检测相应条件符合,打开IO---->导致问题---->A

点评

没看明白这个逻辑。  详情 回复 发表于 5 天前

回复

4901

帖子

1

资源

五彩晶圆(中级)

jinandawei 发表于 2022-1-17 15:28 谢谢,根本问题已解决,就是应用层问题所致。 A:发现问题--->关闭IO--->检测相应条件符合,打开IO- ...

没看明白这个逻辑。

个人签名

默认摸鱼


回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

最新文章 更多>>
    关闭
    站长推荐上一条 1/4 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2022 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表