[51单片机] STC的BUG,联系FAE不理我,这比过几天涨价几倍还恶劣

[复制链接]
25071|154
gdszzyq 发表于 2021-5-11 14:17 | 显示全部楼层
lyjian 发表于 2021-5-11 12:04
这种问题不用想都知道是软件自身的问题。
你见过哪个8位芯片不是只有8位移位操作的?我们能做24位移位操作 ...

我是没想到是8位芯片这个问题,但就算这样,我程序里的24位移位指令编译器也会把它翻译成8位指令,照理说我虽然用了24位移位操作应该也没问题,更离奇的是为什么会影响到定时周期?
liubinghui 发表于 2021-5-11 15:13 | 显示全部楼层
    全球最牛姚大神,广告我第一。
lyjian 发表于 2021-5-11 16:08 | 显示全部楼层
gdszzyq 发表于 2021-5-11 14:17
我是没想到是8位芯片这个问题,但就算这样,我程序里的24位移位指令编译器也会把它翻译成8位指令,照理说 ...

这要看你的软件怎么写才知道原因。
eldiy 发表于 2021-5-11 16:41 | 显示全部楼层
七八年没用STC了,这里天去网站看了几款符合要求的大了电话问销售,加了Q后发消息问货源,价格又不回爱理不理,后来另外联系了一个销售有现货报的价格是标价的5倍。STC是学ST嫌客户太多了要拱手相让一些出去。
逍遥派掌门 发表于 2021-5-12 11:49 | 显示全部楼层
gdszzyq 发表于 2021-5-6 16:52
还有对32位的变量进行移位操作也会出现莫名的问题,当变量值超过65536时就会出现程序好像跑飞一样,但实际 ...

加入数据类型的限制,不要让数据溢出了。
gdszzyq 发表于 2021-5-12 16:51 | 显示全部楼层
逍遥派掌门 发表于 2021-5-12 11:49
加入数据类型的限制,不要让数据溢出了。

这个变量才6万多出问题,离溢出差远了
William1994 发表于 2021-5-12 21:43 | 显示全部楼层
gdszzyq 发表于 2021-5-12 16:51
这个变量才6万多出问题,离溢出差远了

c语言标准里面有个概念 叫 整型提升。
而c语言标准对整数的建议是可以为cpu的最宽寄存器的宽度。keil c51里面的int是16位的,最大值好像也就是几万。
你要定义个32位的数才能移动24位还有内容。默认的类型只能提升到整数。
William1994 发表于 2021-5-12 21:46 | 显示全部楼层
lyjian 发表于 2021-5-11 00:41
不管1T还是4T,指令的操作都是一样的:取指=>译码=>执行。
1T采用的是流水线结构,当前指令在译码时同时取 ...

你的意思是 执行 的时候  读-计算-写 这三个子过程一拍时钟就完成了?

评论

一拍只完成一条指令的一件事,但可以同时完成几条指令的一件事,所以采用流水线作业的内核跳转指令周期都会比较多,并不是跳转指令本身多费事而是本来预取或预处理的指令没用了,要换个地方重新建立流水线作业  发表于 2021-10-16 23:00
逍遥派掌门 发表于 2021-5-13 08:25 | 显示全部楼层
gdszzyq 发表于 2021-5-12 16:51
这个变量才6万多出问题,离溢出差远了

32位的数据,需要移位 6万次才溢出吗?
xdqfc 发表于 2021-5-13 11:12 | 显示全部楼层
逍遥派掌门 发表于 2021-5-13 08:25
32位的数据,需要移位 6万次才溢出吗?

翻手给个赞

本帖子中包含更多资源

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

×
gdszzyq 发表于 2021-5-13 17:12 | 显示全部楼层
逍遥派掌门 发表于 2021-5-13 08:25
32位的数据,需要移位 6万次才溢出吗?

我有说移位6万次吗
jackyhuang1988 发表于 2021-5-13 17:28 | 显示全部楼层
现在的单片机,设计成熟得跟什么一样,哪有那么多BUG。基本是你的使用问题而已
lyjian 发表于 2021-5-14 16:37 | 显示全部楼层
William1994 发表于 2021-5-12 21:46
你的意思是 执行 的时候  读-计算-写 这三个子过程一拍时钟就完成了?


这只是一个指令执行的大概步骤,不用纠结细节。
我不是芯片设计者,每一步具体会做什么不清楚。

本帖子中包含更多资源

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

×

评论

等你知道里面细节, 前面就不会这么说了。  发表于 2021-5-18 22:06
kcfoo1 发表于 2021-5-20 17:42 来自手机 | 显示全部楼层
hwpga 发表于 2021-5-10 20:40
STC8G是Y6核心对吧。
如果老妖用Y6核心做3款,
分别是现在的STC8G 1T  

指令执行周期和频率应该没有多大关系,主要还是看内部总线的构架,如果采用的是流水线式的总线方式存取指令,肯定是要等到上一条指令执行完才执行下一条,现在大部分单片机都采用的是并行取指的总线构架,执行指令的同时已经把下一条指令给取出来了,说白了就是各个外设之间和CPU通讯都有专用的总线,以前51的都是只用一条总线,所有的操作都是经过这条总线和CPU通讯,反正就是为了省钱马路修得太窄了,而且只有一条,像pic,avr这些8位机它们的总线都是16位的,arm这些32位的都是各个外设都有自己总线的,

评论

@William1994 :不是每一个,是把外设分类了,arm的ROM是有专线的,外设分为高速低速,高速的用一条,低速的用一条,每一个外设肯定不会单独一条,  发表于 2021-5-26 03:30
第一次听说每个外设都有专用总线。  发表于 2021-5-22 20:47
 楼主| gx_huang 发表于 2021-5-21 16:25 | 显示全部楼层
上面有人在讨论MCU的功耗问题,从硬件角度,其实是很简单的问题。
无非是单位时间内,有多少个门电路的输出逻辑变化了,MCU的架构很好,尽量少的门电路变化逻辑,自然省电了。
CMOS,静态电流几乎可以忽略,每个门电路都有分布电容,电平变化一次,消耗的能量就是这个分布电容的充电放电能量。
zhangjiyun125 发表于 2021-5-21 16:30 | 显示全部楼层
考虑下国人的芯片吧
 楼主| gx_huang 发表于 2021-5-21 16:31 | 显示全部楼层
要想省电,降低电压,减少分布电容,减少主频,减少参与的门电路数量。当然,有些是矛盾的,成本效率性能兼顾才行。
diedmen 发表于 2021-5-21 16:39 | 显示全部楼层
coody 发表于 2021-4-15 09:37
不是BUG,设计就是如此的。由于寄存器的空间越来越少,所以增加的Timer2 Timer3 Timer4只能用简化的形式 ...

coody,我在大虾群里问你找个便宜的国产运放,你都不上QQ了吗?天天在这冲浪
coody 发表于 2021-5-22 16:55 | 显示全部楼层
diedmen 发表于 2021-5-21 16:39
coody,我在大虾群里问你找个便宜的国产运放,你都不上QQ了吗?天天在这冲浪 ...

我不大喜欢社交软件,我已经很久没用过QQ了,微信也是为了支付而申请的。
3peak是国产的吧?你可以看看。
lyjian 发表于 2021-5-25 20:52 | 显示全部楼层
以恶心为美的STC更新规格书了。

本帖子中包含更多资源

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

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

本版积分规则

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