[STC单片机] 未知BUG

[复制链接]
 楼主| lysfht123 发表于 2020-4-16 15:57 | 显示全部楼层 |阅读模式
     程序中设计了参数“C   XXX ”   每次按下按键参数会+5,可是  在执行动作的时候   参数“C ”会变值,原来是0  执行动作期间变成2.导致不能正常工作了,在工作的时候没有任何操作参数“C”的语句。  程序用了两年了,第一次出现这种问题,两个客户,连续4个产品。
   我怀疑是电压输入不稳定造成的单片机工作电压不稳,反复重启造成的。
ayb_ice 发表于 2020-4-16 16:36 | 显示全部楼层
这么巧,只改变参数吗

 楼主| lysfht123 发表于 2020-4-17 09:20 | 显示全部楼层
ayb_ice 发表于 2020-4-16 16:36
这么巧,只改变参数吗

是的。有时候还会重启。
ayb_ice 发表于 2020-4-17 09:29 | 显示全部楼层
lysfht123 发表于 2020-4-17 09:20
是的。有时候还会重启。

参数都改变了,应该多从程序角度怀疑

参数应该是存在EEPROM中的,需要复杂时序才可能改变,如果只改变参数应该怀疑程序问题,
 楼主| lysfht123 发表于 2020-4-17 09:35 | 显示全部楼层
ayb_ice 发表于 2020-4-17 09:29
参数都改变了,应该多从程序角度怀疑

参数应该是存在EEPROM中的,需要复杂时序才可能改变,如果只改变参 ...

可这个程序用了两年了。
ayb_ice 发表于 2020-4-17 09:42 | 显示全部楼层
lysfht123 发表于 2020-4-17 09:35
可这个程序用了两年了。

时间长了,用的人多了,BUG暴露出来了而已,

或者现在的使用环境使得BUG容易出现而已
ayb_ice 发表于 2020-4-17 09:45 | 显示全部楼层
lysfht123 发表于 2020-4-17 09:35
可这个程序用了两年了。

可以给参数加个CRC校验,存两份(不要存在相邻的地址),哪个CRC正确就用哪个,如果有一份不正确,则用正确的再存两份
 楼主| lysfht123 发表于 2020-4-17 13:06 | 显示全部楼层
ayb_ice 发表于 2020-4-17 09:45
可以给参数加个CRC校验,存两份(不要存在相邻的地址),哪个CRC正确就用哪个,如果有一份不正确,则用正 ...

之前“C”参数单独一个扇区。其他4个参数都在另一个扇区。用的是单片机自带的flash,不是外挂EEPROM、
ayb_ice 发表于 2020-4-17 13:30 | 显示全部楼层
lysfht123 发表于 2020-4-17 13:06
之前“C”参数单独一个扇区。其他4个参数都在另一个扇区。用的是单片机自带的flash,不是外挂EEPROM、 ...

这与外挂还是内置的没有关系,片内的写一样要复杂的时序,也可以加CRC
 楼主| lysfht123 发表于 2020-4-17 14:25 | 显示全部楼层
ayb_ice 发表于 2020-4-17 13:30
这与外挂还是内置的没有关系,片内的写一样要复杂的时序,也可以加CRC

好的,我试试。
hwpga 发表于 2020-4-17 14:40 | 显示全部楼层
本帖最后由 hwpga 于 2020-4-17 14:43 编辑

不用什么CRC,校验和就很稳定
E2P的数据不要一次打包在一起,乱
分批存读,每10个字节左右算一批,做一个校验和
就像仓库入库,出库一样
每一批E2P数据都是独立的
错一批数据也不会影响别的数据
如果数据就1至2个字节,那就做头尾取反校验+数据取反校验
就像遥控器NEC码那种

hwpga 发表于 2020-4-17 14:44 | 显示全部楼层
这些都是思考了+踩坑慢慢领悟出来的
ayb_ice 发表于 2020-4-17 15:39 | 显示全部楼层
hwpga 发表于 2020-4-17 14:40
不用什么CRC,校验和就很稳定
E2P的数据不要一次打包在一起,乱
分批存读,每10个字节左右算一批,做一个校 ...

不太赞成你这说法

有时数据多,分多包可读性,可维护性差,

多备份几份数据,做校验,开机只有一份数据正确就可以了,同时将不正确的部分修正,

多份数据同时损坏的可能性不大
huyusss 发表于 2020-4-17 22:02 | 显示全部楼层
我之前遇到过类似问题:
好几年的成熟方案,程序都没动,但是EEPROM里的数据,会时不时出错;
后找原因,将I2C的上拉电阻由10K改为5.1K后改好,楼主可以试一试。
成熟方案出错,大概率不是软件业务逻辑问题,可能是时钟变了,或者硬件问题。
 楼主| lysfht123 发表于 2020-4-18 16:26 | 显示全部楼层
huyusss 发表于 2020-4-17 22:02
我之前遇到过类似问题:
好几年的成熟方案,程序都没动,但是EEPROM里的数据,会时不时出错;
后找原因,将 ...

我用的是内部FLASH。现在产品退回来了,在我这试了24H也没出现客户哪里的问题。在客户手里基本不用半小时就出现。拿上示波器,准备去现场。
 楼主| lysfht123 发表于 2020-4-18 16:27 | 显示全部楼层
ayb_ice 发表于 2020-4-17 15:39
不太赞成你这说法

有时数据多,分多包可读性,可维护性差,

我加入了CRC,  关键在公司里 一次也没触发错误指示,这就尴尬了。
ayb_ice 发表于 2020-4-20 10:34 | 显示全部楼层
lysfht123 发表于 2020-4-18 16:27
我加入了CRC,  关键在公司里 一次也没触发错误指示,这就尴尬了。

只要现象能容易重现是好解决的
 楼主| lysfht123 发表于 2020-4-20 20:13 | 显示全部楼层
ayb_ice 发表于 2020-4-20 10:34
只要现象能容易重现是好解决的

这就尴尬了,我在现场一直实验了4小时,也没出现。之前他们说不用半小时就出现了。这就尴尬了。
ayb_ice 发表于 2020-4-21 08:29 | 显示全部楼层
lysfht123 发表于 2020-4-20 20:13
这就尴尬了,我在现场一直实验了4小时,也没出现。之前他们说不用半小时就出现了。这就尴尬了。 ...

够尴尬
 楼主| lysfht123 发表于 2020-4-21 11:33 | 显示全部楼层

晚上客户的工程师给我提供了一个重要线索。我们有一款软件,硬件一样但外壳是abs
材质,从来没出过这样的问题。看来很有可能是esd问题了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

25

主题

213

帖子

1

粉丝

25

主题

213

帖子

1

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