打印
[活动]

单片机定义的变量可靠性讨论

[复制链接]
1393|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,程序运行也没有出现任何问题。
我只是担心,因为程序中有一个重要的变量,如果这个变量发生自行改变,将会导致整个产品无法正常使用。因为产品已经量产了,在翻看程序时候偶尔发现的这么一个重要变量。
我是想知道,这种自行改变变量数值的现象是否会发生?

使用特权

评论回复
5
elife| | 2020-2-19 11:31 | 只看该作者
楼主这个是抗干扰问题,或者程序错误检测。我常用的方法是如果出现意外的状态,强行恢复成默认状态,这样做会有一定风险,当然也可以判断其他重要的数据有无错误,如果有错误,重新复位,没有错误,恢复成默认状态运行。

使用特权

评论回复
6
kallos| | 2020-2-19 12:38 | 只看该作者
如果变量声明为位变量(bit型),是不可能出现3这个值。

使用特权

评论回复
7
畅想天子| | 2020-2-19 13:49 | 只看该作者
只要是编写的程序,都可能会遇到。只是看你程序编写的水平,硬件电路设计的能力,出现程序跑飞,程序自我检测。通常程序会采用看门狗计数,如果出现程序跑飞,芯片自动复位,重新开始运行

使用特权

评论回复
8
cjseng| | 2020-2-19 14:04 | 只看该作者
程序中用到这个A的时候,加以判断,如果变成了0和1之外的其它数值,恢复默认值,或程序重启。

使用特权

评论回复
9
dalarang| | 2020-2-19 14:12 | 只看该作者
理论上存在位翻转的问题,但是出现的概率极低。
一般情况下遇不到,即便遇到了也不知道。
如果不是出错后会引起安全事故的产品,可以不考虑这个问题。

使用特权

评论回复
10
cangqing| | 2020-2-19 19:01 | 只看该作者
这是个好帖子

使用特权

评论回复
11
cangqing| | 2020-2-19 19:01 | 只看该作者
好帖子必须点个赞

使用特权

评论回复
12
雪山飞狐D| | 2020-2-21 14:54 | 只看该作者
本帖最后由 雪山飞狐D 于 2020-2-21 14:55 编辑

    如果不是外力(比如辐射静电等),最大的可能是数组或者指针越界修改了内存,汽车电子规范里面好像就有关键设置位要有多重验证,比如三个不同地址的标志位

使用特权

评论回复
13
清风花香| | 2020-2-21 21:49 | 只看该作者
芯片有看门狗在

使用特权

评论回复
14
ygd8718| | 2020-2-22 07:16 | 只看该作者
雪山飞狐D 发表于 2020-2-21 14:54
如果不是外力(比如辐射静电等),最大的可能是数组或者指针越界修改了内存,汽车电子规范里面好像就有 ...

对于指针,不建议在小规模系统上使用,也尽量少使用内存管理函数。
强烈建议:确认各种资源分配是否合理和充裕。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

264

主题

556

帖子

3

粉丝