搜索

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

[复制链接]
8004|144
 楼主 | 2021-4-14 14:34 | 显示全部楼层 |阅读模式
其它的51芯片,用的好好的代码,STC的8A/8F/8G等系列就是不行。
很简单的代码,关闭T2的中断使能位,读写几个变量,再使能T2中断,就会导致T2的中断丢失。
联系FAE,过了一天说他们测试过没有问题。
我回短信说,麻烦给个邮箱,我把代码发给测试一下,到底是否有问题,没任何消息。
        //测试飞读对T0/T1/T2的影响
        do
        {
                wdt();
                _nop_();
                _nop_();
               
                ET0=0;        //临时关闭ET0,脉冲输出未见影响
                _nop_();
                cnt=cnt0;
                _nop_();
                ET0=1;
               
                ET1=0;        //临时关闭ET1,脉冲输出未见影响
                _nop_();
                cnt=cnt1;
                _nop_();
                ET1=1;
               
                IE2&=0xfb;        //临时关闭ET2,脉冲输出会频繁变大n倍
                //EA=0;        //临时关闭EA是可以的,只是影响其它中断
                _nop_();
                cnt=cnt2;
                _nop_();
                IE2|=0x04;
                //EA=1;
               
        }while(1);

使用特权

评论回复

评论

wpj5188 2021-5-10 14:39 回复TA
还有其他BUG ,用久了,程序复杂点就发现怪毛病。。。而且能确定是芯片问题 

相关帖子

| 2021-4-14 15:40 | 显示全部楼层
真可能不是他们的问题,
这点东西都有问题的话,别人早发现了
谁知道你在其它中断干了什么呢

使用特权

评论回复
 楼主 | 2021-4-14 15:58 | 显示全部楼层
只是验证程序,啥都没干

void t0_int() interrupt 1
{
        cnt0++;
       
        //GPIO输出方波,验证周期
        P35=!P35;
}

void t1_int() interrupt 3
{
        cnt1++;
       
        //GPIO输出方波,验证周期
        P36=!P36;
}

//T2=1ms
//T2IF,STC8G硬件自动清零,STC8F需要软件清零,实际不清零也没有关系
//固定最低优先级
void t2_int() interrupt 12
{
        static uchar t2_cnt;
        static uchar t10ms;

        AUXINTIF&=0xfe;        //T2IF=0
       
        t2_cnt++;
        if(t2_cnt>=10)
        {
                t2_cnt=0;

                t10ms++;
                if(t10ms==100)
                {
                        t10ms=0;
                        wdt_ok=1;
                }

                if(cnt2!=0) cnt2--;
        }

        //GPIO输出方波,验证周期
        P37=!P37;
}

使用特权

评论回复
 楼主 | 2021-4-14 16:00 | 显示全部楼层
唯一可以解释的,就是在T2溢出前关闭ET2,T2溢出,再开启ET2,刚才的中断就丢失了。
别人家的T2中断,不会丢失,只是开启ET2才会马上进中断。

使用特权

评论回复
 楼主 | 2021-4-14 16:10 | 显示全部楼层
别人家的,ET2关闭,开启后,只要TF2是1,会马上进入中断,中断不会丢失,只会延迟了一下。

还测试过中微电子的UART,也有和其它MCU不一样的地方。
普通51 MCU,可以TI=1触发UART发送中断。
CMS芯片,无法TI=1触发中断,只能写发送寄存器触发。问了FAE,也是毫无反馈,估计不懂就不理了。
这就是目前国内MCU的现状。

使用特权

评论回复
 楼主 | 2021-4-14 16:22 | 显示全部楼层
我只是想看看,STC不是一直在这个论坛里吹牛国产MCU很厉害吗?不涨价吗?
我就想看看,什么时候STC的人会来理这个帖子!
是否忙着把价格从1.5元左右改为4.5元左右,忙着数钱呢?

使用特权

评论回复
| 2021-4-14 16:34 | 显示全部楼层
一直不敢用,今年被逼无奈用了,也不敢用复杂的程序,能用硬件实现的暂时都不会用STC软件去实现,一个天天吹牛皮的公司,没量都不鸟你一眼的公司,不敢信任

使用特权

评论回复
| 2021-4-14 17:14 | 显示全部楼层
他们家的FAE等于摆设,电话永远都是通话中,有问题还是自己琢磨琢磨吧

使用特权

评论回复
| 2021-4-14 18:30 | 显示全部楼层
我有个项目用的STC,需要24小时连续运行,偶尔会出现定时器中断停止(不进中断),大概率时间在几天到几十天,断电重启又开始工作了。

使用特权

评论回复
| 2021-4-14 19:44 | 显示全部楼层
这颗芯片量产多久了?看看软件能不能规避掉。

使用特权

评论回复
 楼主 | 2021-4-14 19:49 | 显示全部楼层
renesaschina 发表于 2021-4-14 19:44
这颗芯片量产多久了?看看软件能不能规避掉。

需要临时关闭定时器中断的,尽量用T0/T1,不要用T2即可,当然T2也可以用,临时关闭总中断

使用特权

评论回复
| 2021-4-14 21:57 | 显示全部楼层
等待ST的官方人员的回复。

使用特权

评论回复
| 2021-4-14 23:10 | 显示全部楼层
我用得多STC的MCU,比较了解。
楼主,STC的T2、T3、T4,是扩展的外设,为了操作简单,当你禁止中断时,这3个定时器的溢出不会置位中断标志。

使用特权

评论回复
| 2021-4-15 08:36 | 显示全部楼层
gx_huang 发表于 2021-4-14 16:00
唯一可以解释的,就是在T2溢出前关闭ET2,T2溢出,再开启ET2,刚才的中断就丢失了。
别人家的T2中断,不会 ...

这个问题验证也很简单的,关定时器中断后,设置个断点,查看SFR值,

估计是流水线的原因,关中断是有要求的,后面一般需要插入几个NOP指令(甚至需要一个多周期的指令),否则可能达不到效果,很多51都有这个要求,包括欧美的芯片

使用特权

评论回复
| 2021-4-15 08:41 | 显示全部楼层
路过学习了,以前用过STC的芯片,没有发现这个问题哦。

使用特权

评论回复
| 2021-4-15 08:47 | 显示全部楼层
呵呵。厂家最怕砸牌子的牛掰

使用特权

评论回复
 楼主 | 2021-4-15 08:54 | 显示全部楼层
coody 发表于 2021-4-14 23:10
我用得多STC的MCU,比较了解。
楼主,STC的T2、T3、T4,是扩展的外设,为了操作简单,当你禁止中断时,这3 ...

有道理,但是这样的设计显然是bug,中断丢失是不可接受的,中断延时几个微秒没啥关系

使用特权

评论回复
 楼主 | 2021-4-15 08:55 | 显示全部楼层
ayb_ice 发表于 2021-4-15 08:36
这个问题验证也很简单的,关定时器中断后,设置个断点,查看SFR值,

估计是流水线的原因,关中断是有要 ...

我的程序里有加nop指令,不过不是为了什么流水线,是为了加大出现问题的概率

使用特权

评论回复
| 2021-4-15 09:23 | 显示全部楼层
如果从销售层面来说,客户有大小,可以区别对待。那你做FAE的,吃的就是这碗饭,客户不应该有大小之分。即使是客户的问题,也应该有应有答。不理客户就有点不太敬业了。

使用特权

评论回复
| 2021-4-15 09:37 | 显示全部楼层
gx_huang 发表于 2021-4-15 08:54
有道理,但是这样的设计显然是bug,中断丢失是不可接受的,中断延时几个微秒没啥关系 ...

不是BUG,设计就是如此的。由于寄存器的空间越来越少,所以增加的Timer2 Timer3 Timer4只能用简化的形式,只有一个模式:16位自动重装。对于STC15系列,有以上定时器的,连中断标志都是隐含的,不能访问,所以为了能清除中断标志,则规定:禁止中断时,清除中断标志,并且不再置位中断标志。
另外,扩展的外中断INT2 INT3 INT4也是相同的规则,不是BUG,不是BUG,不是BUG。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 我要提问 投诉建议 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

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