打印

请问MCU进入什么状态?

[复制链接]
3771|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ningling_21|  楼主 | 2012-1-9 20:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近调试程序时,发现MCU居然进入这样状态:
程序在运行,定时器0可以发生中断;
定时1波特率发生器;
定时器2不再产生中断;
定时器3不再产生中断;
串口,有收到数据,但不产生中断;

寄存器设置为:
总中断:开
定时器中断:开(1除外)
串口中断: 开

进入条件:串口通信过程中突然进入这种状态;
注:
一般运行正常,偶尔会进入这种状态;在调试状态复位MCU再运行又正常。

相关帖子

沙发
dengm| | 2012-1-9 21:30 | 只看该作者
IP ?  IP2?

使用特权

评论回复
板凳
NE5532| | 2012-1-9 22:27 | 只看该作者
请问楼主,MCU指的是什么型号的芯片,偶实在看不懂,爱莫能助~!

使用特权

评论回复
地板
ningling_21|  楼主 | 2012-1-10 07:29 | 只看该作者
3# NE5532
mcu:c8051f340
OS:  RTX51

使用特权

评论回复
5
Ryanhsiung| | 2012-1-10 08:15 | 只看该作者
51也跑OS! 强人啊

使用特权

评论回复
6
ayb_ice| | 2012-1-10 08:26 | 只看该作者
120%程序问题

使用特权

评论回复
7
ningling_21|  楼主 | 2012-1-10 10:23 | 只看该作者
120%程序问题
ayb_ice 发表于 2012-1-10 08:26


可是根据观察,中断设置都是打开的...

还有其它原因导致不产生中断吗?

使用特权

评论回复
8
ningling_21|  楼主 | 2012-1-10 10:25 | 只看该作者
51也跑OS! 强人啊
Ryanhsiung 发表于 2012-1-10 08:15

只要51的资源够用就可以...

使用特权

评论回复
9
ShakaLeo| | 2012-1-10 10:42 | 只看该作者
如果定时器0是高优先级中断,其它中断是低优先级的,从某个中断返回的时候如果没有执行RETI而是执行的RET指令,就可能会出现楼主所说的问题,可能是在中断里切换任务时产生的问题。

使用特权

评论回复
10
ayb_ice| | 2012-1-10 10:51 | 只看该作者
不要怀疑51内核有BUG,特别是标准51

使用特权

评论回复
11
ShakaLeo| | 2012-1-10 11:11 | 只看该作者
51有两个不可寻址的优先级状态触发器,当特定优先级的某中断源被响应后,相应的触发器被置位,直到退出中断时执行RETI指令,这个触发器才复位,在此期间,同级和低级的中断请求将被屏蔽。

使用特权

评论回复
12
lhx522729| | 2012-1-10 11:39 | 只看该作者
应该是程序的问题

使用特权

评论回复
13
hyhmh| | 2012-1-10 11:44 | 只看该作者
程序问题
1)有没有Watchdog?
2)RAM 空间冲突(如 堆栈溢出,若无WDT,则 MCU就 胡乱 取指令 乱飞)。

使用特权

评论回复
14
linqing171| | 2012-1-10 12:06 | 只看该作者
Silabs的CIP51核,如果用汇编的话,注意IE=0要写两次,具体见DataSheet里面的说明。单周期指令在进入中断之前的,流水线有问题。


RTX51也不是一天两天了,应该不会有问题。 楼上几个的RETI什么的,也有可能。EIE2似乎没有关系。

使用特权

评论回复
15
linqing171| | 2012-1-10 12:07 | 只看该作者
另外,为什么不换380啊? 我最近替换了个。

使用特权

评论回复
16
xlsbz| | 2012-1-10 12:32 | 只看该作者
Silabs的CIP51核,如果用汇编的话,注意IE=0要写两次,具体见DataSheet里面的说明。单周期指令在进入中断之前的,流水线有问题。



linqing171 发表于 2012-1-10 12:06


Silabs的CIP51核,如果用汇编的话,注意IE=0要写两次,具体见DataSheet里面的说明。单周期指令在进入中断之前的,流水线有问题。


帅哥,你听谁说的啊???多谢!!

DataSheet里面的说明在哪里?请明示!!!

使用特权

评论回复
17
ningling_21|  楼主 | 2012-1-10 14:08 | 只看该作者
程序问题
1)有没有Watchdog?
2)RAM 空间冲突(如 堆栈溢出,若无WDT,则 MCU就 胡乱 取指令 乱飞)。
hyhmh 发表于 2012-1-10 11:44


有WDT,且已使能。
程序没有乱飞,否则就会被WDT复位。
堆栈溢出能不能看到?能的话,如何看呢?

使用特权

评论回复
18
ningling_21|  楼主 | 2012-1-10 14:14 | 只看该作者
如果定时器0是高优先级中断,其它中断是低优先级的,从某个中断返回的时候如果没有执行RETI而是执行的RET指令,就可能会出现楼主所说的问题,可能是在中断里切换任务时产生的问题。 ...
ShakaLeo 发表于 2012-1-10 10:42


“没RETI而执行RET” RTX51 不会有这种BUG吧?
外部中断没用到,定时器0中断优先级最高的。

使用特权

评论回复
19
ShakaLeo| | 2012-1-10 16:04 | 只看该作者
“没RETI而执行RET” RTX51 不会有这种BUG吧?
外部中断没用到,定时器0中断优先级最高的。
ningling_21 发表于 2012-1-10 14:14

RTX51不会有这种bug,但不排除你的使用方法有问题
我说的优先级高低不是默认优先级,是IP寄存器里设置的抢占优先级

使用特权

评论回复
20
dengm| | 2012-1-10 16:24 | 只看该作者
串口通信过程中突然进入这种状态:  串口中断用ret代替了reti

使用特权

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

本版积分规则

5013

主题

17707

帖子

51

粉丝