[活动] 单片机定义的变量可靠性讨论

[复制链接]
1850|14
 楼主| c555 发表于 2020-2-19 09:11 | 显示全部楼层 |阅读模式
  在单片机中,如定义了A变量,在整个程序运行中,数值只有两种值,就是0和1。
有没有一种可能,变量自己变成了3,如果变成3就会导致系统无法正常使用了。
  有没有可能是静电、雷击、等原因会让变量变化?
  目前我是没有遇到这种情况,不知有没有遇到的

评分

参与人数 1威望 +3 收起 理由
congfenglong + 3 赞一个!

查看全部评分

steelen 发表于 2020-2-19 09:40 | 显示全部楼层
更有可能的是软件的BUG
gx_huang 发表于 2020-2-19 09:41 | 显示全部楼层
只遇到MCU跑飞死机的,至于跑飞的原因是哪个寄存器变化什么的,就不知道了,只知道要么软件BUG必然会跑飞,要么硬件抗干扰设计不够偶尔跑飞。
软件原因修改软件,硬件原因修改硬件。
 楼主| c555 发表于 2020-2-19 10:13 | 显示全部楼层
其实软件中也没有bug,程序运行也没有出现任何问题。
我只是担心,因为程序中有一个重要的变量,如果这个变量发生自行改变,将会导致整个产品无法正常使用。因为产品已经量产了,在翻看程序时候偶尔发现的这么一个重要变量。
我是想知道,这种自行改变变量数值的现象是否会发生?
elife 发表于 2020-2-19 11:31 | 显示全部楼层
楼主这个是抗干扰问题,或者程序错误检测。我常用的方法是如果出现意外的状态,强行恢复成默认状态,这样做会有一定风险,当然也可以判断其他重要的数据有无错误,如果有错误,重新复位,没有错误,恢复成默认状态运行。
kallos 发表于 2020-2-19 12:38 | 显示全部楼层
如果变量声明为位变量(bit型),是不可能出现3这个值。
畅想天子 发表于 2020-2-19 13:49 | 显示全部楼层
只要是编写的程序,都可能会遇到。只是看你程序编写的水平,硬件电路设计的能力,出现程序跑飞,程序自我检测。通常程序会采用看门狗计数,如果出现程序跑飞,芯片自动复位,重新开始运行
cjseng 发表于 2020-2-19 14:04 | 显示全部楼层
程序中用到这个A的时候,加以判断,如果变成了0和1之外的其它数值,恢复默认值,或程序重启。
dalarang 发表于 2020-2-19 14:12 | 显示全部楼层
理论上存在位翻转的问题,但是出现的概率极低。
一般情况下遇不到,即便遇到了也不知道。
如果不是出错后会引起安全事故的产品,可以不考虑这个问题。
cangqing 发表于 2020-2-19 19:01 | 显示全部楼层
这是个好帖子
cangqing 发表于 2020-2-19 19:01 | 显示全部楼层
好帖子必须点个赞
雪山飞狐D 发表于 2020-2-21 14:54 | 显示全部楼层
本帖最后由 雪山飞狐D 于 2020-2-21 14:55 编辑

    如果不是外力(比如辐射静电等),最大的可能是数组或者指针越界修改了内存,汽车电子规范里面好像就有关键设置位要有多重验证,比如三个不同地址的标志位
清风花香 发表于 2020-2-21 21:49 | 显示全部楼层
芯片有看门狗在
ygd8718 发表于 2020-2-22 07:16 | 显示全部楼层
雪山飞狐D 发表于 2020-2-21 14:54
如果不是外力(比如辐射静电等),最大的可能是数组或者指针越界修改了内存,汽车电子规范里面好像就有 ...

对于指针,不建议在小规模系统上使用,也尽量少使用内存管理函数。
强烈建议:确认各种资源分配是否合理和充裕。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

264

主题

556

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部