搜索
bottom↓
回复: 58
打印 上一主题 下一主题

单片机运算问题,同样的程序,同样的芯片,结果不一样

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2024-5-6 20:04:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 泡泡鱼lu 于 2024-5-6 20:09 编辑

玩了十几年单片机,第一次见这样怪的问题。芯片型号CX32L003,程序是很简单的乘除法。一样型号的芯片,居然结果不一样。开始是用仿真器充的程序,后面换脱机烧写,还是不一样的结果。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

2
 楼主| 发表于 2024-5-6 20:06:21 | 只看该作者
本帖最后由 泡泡鱼lu 于 2024-5-6 20:08 编辑

真的好怪

出0入0汤圆

3
发表于 2024-5-6 20:13:55 | 只看该作者
都益出来,结果不重要吗

出20入22汤圆

4
发表于 2024-5-6 20:15:35 | 只看该作者
楼主来搞笑的,这低级错误,,,

出0入0汤圆

5
 楼主| 发表于 2024-5-6 20:24:10 | 只看该作者
gyzzg2030 发表于 2024-5-6 20:15
楼主来搞笑的,这低级错误,,,
(引用自4楼)

那里有问题,请指教

出0入442汤圆

6
发表于 2024-5-6 20:29:14 | 只看该作者

串口波特率偏差较大。。。。

出0入0汤圆

7
 楼主| 发表于 2024-5-6 20:30:02 | 只看该作者
wye11083 发表于 2024-5-6 20:29
串口波特率偏差较大。。。。
(引用自6楼)

板子上有数码管,直接用数码管显示的

出0入0汤圆

8
 楼主| 发表于 2024-5-6 20:30:47 | 只看该作者
u8 换成u16 还是一样

出20入22汤圆

9
发表于 2024-5-6 20:32:15 | 只看该作者
a和b转为u16再计算

出0入442汤圆

10
发表于 2024-5-6 20:32:52 | 只看该作者
泡泡鱼lu 发表于 2024-5-6 20:30
板子上有数码管,直接用数码管显示的
(引用自7楼)

数码管坏了?

出0入0汤圆

11
 楼主| 发表于 2024-5-6 20:33:32 | 只看该作者

这个试过啦,不行

出0入442汤圆

12
发表于 2024-5-6 20:34:36 | 只看该作者


不需要转。32位机总是扩展到32位再做乘除。所以只可能是外设错了

还有一种可能,超频了200%,有时候会出现奇怪的结果。

最后一种可能,芯片乘法器坏了。。

出0入0汤圆

13
 楼主| 发表于 2024-5-6 20:34:38 | 只看该作者
还是说这个芯片比较特殊,内部有什么坏了,导致不一样的结果

出0入4汤圆

14
发表于 2024-5-6 20:49:01 | 只看该作者
display(0)试试,看是不是显示为8

出0入0汤圆

15
 楼主| 发表于 2024-5-6 20:55:37 | 只看该作者
pspice 发表于 2024-5-6 20:49
display(0)试试,看是不是显示为8
(引用自14楼)

显示是正常的

出590入992汤圆

16
发表于 2024-5-6 21:15:16 来自手机 | 只看该作者
本帖最后由 SUPER_CRJ 于 2024-5-6 21:17 编辑

把static去掉试试?看样子确实简单。不应该的

出0入0汤圆

17
 楼主| 发表于 2024-5-6 21:17:43 | 只看该作者

试过了,优化等级也试过了

出0入0汤圆

18
 楼主| 发表于 2024-5-6 21:18:15 | 只看该作者
不知道视频怎么上传,来几个视频看看大家就知道怪了

出0入84汤圆

19
发表于 2024-5-6 21:31:52 | 只看该作者
本帖最后由 boyiee 于 2024-5-6 21:39 编辑

看看是不是static后被其他程序改了。 或者DISPLAY函数有问题。

出0入71汤圆

20
发表于 2024-5-6 21:32:51 | 只看该作者
计算结果50是正确的。直接给dat赋值50,看看输出结果。 如果有问题的输出58的话,大概率是数码管有问题。如果有问题输出50,那就真是计算有问题。

出0入76汤圆

21
发表于 2024-5-6 21:56:18 来自手机 | 只看该作者
看一下硬件仿真的data结果是50吧? 若数码管是用74164,74595驱动的吧, display代码贴出来看看有没有没BUG,电路图也可以发上来,看A硬件本身有没有问题。

出0入9汤圆

22
发表于 2024-5-6 22:03:36 | 只看该作者
你用CX32,难怪你算错

出30入42汤圆

23
发表于 2024-5-6 22:12:49 来自手机 | 只看该作者
wanggoals 发表于 2024-5-6 22:03
你用CX32,难怪你算错
(引用自22楼)

大佬,有什么玄机?

出0入0汤圆

24
 楼主| 发表于 2024-5-6 22:19:24 来自手机 | 只看该作者
回复各位前辈,首先硬件是好的,显示函数也是正常的,这些都已经排除过了

出0入0汤圆

25
 楼主| 发表于 2024-5-6 22:20:07 来自手机 | 只看该作者
SUPER_CRJ 发表于 2024-5-6 21:15
把static去掉试试?看样子确实简单。不应该的
(引用自16楼)

也试过了,不行

出0入18汤圆

26
发表于 2024-5-7 07:52:40 来自手机 | 只看该作者
看汇编。  

出1310入193汤圆

27
发表于 2024-5-7 08:14:30 | 只看该作者
你们大佬把lz高的更加晕菜了
pcb材质和芯片封装材料都要考虑进去了

出0入0汤圆

28
发表于 2024-5-7 08:38:37 | 只看该作者
我敢肯定,楼主那儿用的是核电,我这边用的是水电,就没有出过问题。

出0入0汤圆

29
发表于 2024-5-7 08:44:10 | 只看该作者
每次运行都受宇宙射线影响

出0入475汤圆

30
发表于 2024-5-7 09:05:22 来自手机 | 只看该作者
一共只有两个板子,楼主又没办法把两个mcu交换,或者把不对的mcu重新换一个是不是还是不对,
你们就在这瞎起哄。。。这是科学精神吗?就像那个一群博士讨论高空滴水下来把人脑袋砸穿一样😁

出0入42汤圆

31
发表于 2024-5-7 09:07:24 | 只看该作者
不要重新编译,直接烧写同一个hex

出190入0汤圆

32
发表于 2024-5-7 09:24:39 | 只看该作者
如果是我,1)把 static 去掉,因为带static 函数不可重入;2)不使用 display 来验证 dat 的值,使用串口输出,或者简单点,如果 dat 值是 50 拉高管脚 A,否则拉高管脚 B ;

出0入18汤圆

33
发表于 2024-5-7 09:35:11 | 只看该作者
哈哈,这种问题最有意思了,坐等结果

出0入0汤圆

34
 楼主| 发表于 2024-5-7 09:36:16 来自手机 | 只看该作者
1a2b3c 发表于 2024-5-7 09:05
一共只有两个板子,楼主又没办法把两个mcu交换,或者把不对的mcu重新换一个是不是还是不对,
你们就在这瞎 ...

(引用自30楼)

换过啦,有问题的芯片还是有问题

出0入0汤圆

35
 楼主| 发表于 2024-5-7 09:39:54 来自手机 | 只看该作者
knight_sh 发表于 2024-5-7 09:24
如果是我,1)把 static 去掉,因为带static 函数不可重入;2)不使用 display 来验证 dat 的值,使用串口 ...
(引用自32楼)

想法不错,一会试下

出0入0汤圆

36
 楼主| 发表于 2024-5-7 09:52:15 来自手机 | 只看该作者
cocal_li 发表于 2024-5-7 09:07
不要重新编译,直接烧写同一个hex
(引用自31楼)

用脱机烧写试过了,不行

出1310入193汤圆

37
发表于 2024-5-7 09:54:02 | 只看该作者
泡泡鱼lu 发表于 2024-5-7 09:36
换过啦,有问题的芯片还是有问题
(引用自34楼)

有问题的芯片还是有问题  这就是答案了

出0入91汤圆

38
发表于 2024-5-7 10:13:46 | 只看该作者
先把  U8 换成 U16  然后再把 除255 改成 >>8

出0入224汤圆

39
发表于 2024-5-7 10:15:25 | 只看该作者
有串口吗,或者调试,看两个板子,计算后的dat值分别是多少。

出110入26汤圆

40
发表于 2024-5-7 10:16:29 | 只看该作者
这个代码压根就不用MCU运算,编译器都能优化掉,直接出结果了,所以是display的问题。

出0入16汤圆

41
发表于 2024-5-7 10:17:18 | 只看该作者
问题还是得深究,万一不是个例就惨了,这种坏法还没碰到过

出0入0汤圆

42
 楼主| 发表于 2024-5-7 10:39:03 来自手机 | 只看该作者
kinoko 发表于 2024-5-7 10:16
这个代码压根就不用MCU运算,编译器都能优化掉,直接出结果了,所以是display的问题。 ...
(引用自40楼)

Display没有问题,已经100%确定芯片问题

出0入475汤圆

43
发表于 2024-5-7 10:40:45 来自手机 | 只看该作者
泡泡鱼lu 发表于 2024-5-7 09:36
换过啦,有问题的芯片还是有问题
(引用自34楼)

那就扔掉了完事了呗,还拿在手上折腾个啥,这点价格就该这样的芯片良品率呗😏

出0入0汤圆

44
 楼主| 发表于 2024-5-7 10:42:26 来自手机 | 只看该作者
现在基本确定是芯片的问题了,但是做产品,这样的问题太难发现了,产品也能用,但计算数据会不一样,这种问题找起来好头疼。

出0入0汤圆

45
 楼主| 发表于 2024-5-7 10:43:16 来自手机 | 只看该作者
1a2b3c 发表于 2024-5-7 10:40
那就扔掉了完事了呗,还拿在手上折腾个啥,这点价格就该这样的芯片良品率呗😏 ...
(引用自43楼)

做产品,已经批量两三年的产品,最近出现这种问题。如果是玩玩的那也无所谓

出0入0汤圆

46
 楼主| 发表于 2024-5-7 10:45:23 来自手机 | 只看该作者
让人头疼的是芯片要是直接不能用还好,特么也能用,要写个专门测试程序

出590入992汤圆

47
发表于 2024-5-7 11:48:47 来自手机 | 只看该作者
不可能两片芯片都有问题,不行寄给我,我来试试。

出0入57汤圆

48
发表于 2024-5-7 11:59:47 | 只看该作者
你这个程序单片机根本就不算,编译器直接给算好了,直接就是display(50)

出0入0汤圆

49
 楼主| 发表于 2024-5-7 12:28:18 来自手机 | 只看该作者
SUPER_CRJ 发表于 2024-5-7 11:48
不可能两片芯片都有问题,不行寄给我,我来试试。
(引用自47楼)

给个地址

出0入0汤圆

50
 楼主| 发表于 2024-5-7 12:29:56 来自手机 | 只看该作者
leafstamen 发表于 2024-5-7 11:59
你这个程序单片机根本就不算,编译器直接给算好了,直接就是display(50)
(引用自48楼)

是我没说明白吗,两个芯片,同样的程序,用脱机器烧写的程序,结果居然不一样,如果直接displaye(50),那应该结果是一样的呀?

出0入57汤圆

51
发表于 2024-5-7 13:43:26 | 只看该作者
泡泡鱼lu 发表于 2024-5-7 12:29
是我没说明白吗,两个芯片,同样的程序,用脱机器烧写的程序,结果居然不一样,如果直接displaye(50),那 ...
(引用自50楼)

所以问题出在display之后的步骤上,比如那个8中间的那个横杠和另一段连了导致被带出来了等等。

出0入0汤圆

52
 楼主| 发表于 2024-5-7 14:11:22 | 只看该作者
leafstamen 发表于 2024-5-7 13:43
所以问题出在display之后的步骤上,比如那个8中间的那个横杠和另一段连了导致被带出来了等等。 ...
(引用自51楼)


显示没错的,100%确定就是芯片问题了。if(dat == 50) display(1); else display(2);   已经把程序改成这样了,一个芯片显示是1,另外一个芯片显示是2,所以已经排除display这个问题啦,这个排除方法参考32楼这位前辈

出590入992汤圆

53
发表于 2024-5-7 14:14:22 | 只看该作者

加我微信:TC4300
微信上我发你地址。
收到之后我来研究下。

出590入992汤圆

54
发表于 2024-5-7 15:00:32 | 只看该作者
楼主换了:全局变量测试。
同样的代码换个芯片也可以了。
大概率确实是之前的芯片出问题了。

出0入0汤圆

55
发表于 2024-5-7 17:30:29 | 只看该作者
楼主,我用这个芯片,  几天后,会重启  100台, 就有那么几台重启

在不关systick 的时候,重启很明显
关了就几台重启.

条件:  低功耗产品,会睡眠会唤醒

不知道你遇到过没>

出115入0汤圆

56
发表于 2024-5-7 17:33:35 | 只看该作者
100%是数码管缺画。

出0入0汤圆

57
 楼主| 发表于 2024-5-7 19:19:23 来自手机 | 只看该作者
sweet_136 发表于 2024-5-7 17:30
楼主,我用这个芯片,  几天后,会重启  100台, 就有那么几台重启

在不关systick 的时候,重启很明显

(引用自55楼)

没试过,但这个芯片确实是很多坑

出0入18汤圆

58
发表于 2024-5-7 20:51:34 来自手机 | 只看该作者
看来那芯片有问题啊

出675入8汤圆

59
发表于 2024-5-8 08:44:23 来自手机 | 只看该作者
这个芯片的adc部分我用了感觉效果不错,比灵动之类的好很多,和stm32差不多
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-20 10:44

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表