打印
[51单片机]

STC的BUG,联系FAE不理我,这比过几天涨价几倍还恶劣

[复制链接]
楼主: gx_huang
手机看帖
扫描二维码
随时随地手机跟帖
121
lyjian 发表于 2021-5-11 12:04
这种问题不用想都知道是软件自身的问题。
你见过哪个8位芯片不是只有8位移位操作的?我们能做24位移位操作 ...

我是没想到是8位芯片这个问题,但就算这样,我程序里的24位移位指令编译器也会把它翻译成8位指令,照理说我虽然用了24位移位操作应该也没问题,更离奇的是为什么会影响到定时周期?

使用特权

评论回复
122
liubinghui| | 2021-5-11 15:13 | 只看该作者
    全球最牛姚大神,广告我第一。

使用特权

评论回复
123
lyjian| | 2021-5-11 16:08 | 只看该作者
gdszzyq 发表于 2021-5-11 14:17
我是没想到是8位芯片这个问题,但就算这样,我程序里的24位移位指令编译器也会把它翻译成8位指令,照理说 ...

这要看你的软件怎么写才知道原因。

使用特权

评论回复
124
eldiy| | 2021-5-11 16:41 | 只看该作者
七八年没用STC了,这里天去网站看了几款符合要求的大了电话问销售,加了Q后发消息问货源,价格又不回爱理不理,后来另外联系了一个销售有现货报的价格是标价的5倍。STC是学ST嫌客户太多了要拱手相让一些出去。

使用特权

评论回复
125
逍遥派掌门| | 2021-5-12 11:49 | 只看该作者
gdszzyq 发表于 2021-5-6 16:52
还有对32位的变量进行移位操作也会出现莫名的问题,当变量值超过65536时就会出现程序好像跑飞一样,但实际 ...

加入数据类型的限制,不要让数据溢出了。

使用特权

评论回复
126
gdszzyq| | 2021-5-12 16:51 | 只看该作者
逍遥派掌门 发表于 2021-5-12 11:49
加入数据类型的限制,不要让数据溢出了。

这个变量才6万多出问题,离溢出差远了

使用特权

评论回复
127
William1994| | 2021-5-12 21:43 | 只看该作者
gdszzyq 发表于 2021-5-12 16:51
这个变量才6万多出问题,离溢出差远了

c语言标准里面有个概念 叫 整型提升。
而c语言标准对整数的建议是可以为cpu的最宽寄存器的宽度。keil c51里面的int是16位的,最大值好像也就是几万。
你要定义个32位的数才能移动24位还有内容。默认的类型只能提升到整数。

使用特权

评论回复
128
William1994| | 2021-5-12 21:46 | 只看该作者
lyjian 发表于 2021-5-11 00:41
不管1T还是4T,指令的操作都是一样的:取指=>译码=>执行。
1T采用的是流水线结构,当前指令在译码时同时取 ...

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

使用特权

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

32位的数据,需要移位 6万次才溢出吗?

使用特权

评论回复
130
xdqfc| | 2021-5-13 11:12 | 只看该作者
逍遥派掌门 发表于 2021-5-13 08:25
32位的数据,需要移位 6万次才溢出吗?

翻手给个赞

使用特权

评论回复
131
gdszzyq| | 2021-5-13 17:12 | 只看该作者
逍遥派掌门 发表于 2021-5-13 08:25
32位的数据,需要移位 6万次才溢出吗?

我有说移位6万次吗

使用特权

评论回复
132
jackyhuang1988| | 2021-5-13 17:28 | 只看该作者
现在的单片机,设计成熟得跟什么一样,哪有那么多BUG。基本是你的使用问题而已

使用特权

评论回复
133
lyjian| | 2021-5-14 16:37 | 只看该作者
William1994 发表于 2021-5-12 21:46
你的意思是 执行 的时候  读-计算-写 这三个子过程一拍时钟就完成了?


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

使用特权

评论回复
评论
William1994 2021-5-18 22:06 回复TA
等你知道里面细节, 前面就不会这么说了。 
134
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位的都是各个外设都有自己总线的,

使用特权

评论回复
评论
kcfoo1 2021-5-26 03:30 回复TA
@William1994 :不是每一个,是把外设分类了,arm的ROM是有专线的,外设分为高速低速,高速的用一条,低速的用一条,每一个外设肯定不会单独一条, 
William1994 2021-5-22 20:47 回复TA
第一次听说每个外设都有专用总线。 
135
gx_huang|  楼主 | 2021-5-21 16:25 | 只看该作者
上面有人在讨论MCU的功耗问题,从硬件角度,其实是很简单的问题。
无非是单位时间内,有多少个门电路的输出逻辑变化了,MCU的架构很好,尽量少的门电路变化逻辑,自然省电了。
CMOS,静态电流几乎可以忽略,每个门电路都有分布电容,电平变化一次,消耗的能量就是这个分布电容的充电放电能量。

使用特权

评论回复
136
zhangjiyun125| | 2021-5-21 16:30 | 只看该作者
考虑下国人的芯片吧

使用特权

评论回复
137
gx_huang|  楼主 | 2021-5-21 16:31 | 只看该作者
要想省电,降低电压,减少分布电容,减少主频,减少参与的门电路数量。当然,有些是矛盾的,成本效率性能兼顾才行。

使用特权

评论回复
138
diedmen| | 2021-5-21 16:39 | 只看该作者
coody 发表于 2021-4-15 09:37
不是BUG,设计就是如此的。由于寄存器的空间越来越少,所以增加的Timer2 Timer3 Timer4只能用简化的形式 ...

coody,我在大虾群里问你找个便宜的国产运放,你都不上QQ了吗?天天在这冲浪

使用特权

评论回复
139
coody| | 2021-5-22 16:55 | 只看该作者
diedmen 发表于 2021-5-21 16:39
coody,我在大虾群里问你找个便宜的国产运放,你都不上QQ了吗?天天在这冲浪 ...

我不大喜欢社交软件,我已经很久没用过QQ了,微信也是为了支付而申请的。
3peak是国产的吧?你可以看看。

使用特权

评论回复
140
lyjian| | 2021-5-25 20:52 | 只看该作者
以恶心为美的STC更新规格书了。

使用特权

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

本版积分规则