打印

51单片机死机原因

[复制链接]
4707|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eledong|  楼主 | 2008-4-19 15:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用89C2051做的一个小控制器,用到了两个外部中断,其中一个功能切换按键,上电工作后只要按的次数到达某一个固定数值,比方说20次,就会死机,否则没事……
程序在Keil上面模拟没事,硬件上的其他功能模块也正常,不知道是什么问题啊?急急急,请大虾们指点一下

相关帖子

沙发
dai_weis| | 2008-4-19 15:45 | 只看该作者

死机问题很多

首先要排除你程序问题,比如数据的安全性,溢出等
可以跟踪看看

使用特权

评论回复
板凳
t.jm| | 2008-4-19 18:02 | 只看该作者

肯定是程序问题。

使用特权

评论回复
地板
eledong|  楼主 | 2008-4-19 22:27 | 只看该作者

谢谢回复!

单片机有128字节的RAM
我用到的变量列表如下:
bit            5个
unsigned char        12个
unsigned int        1个
unsigned int型数组    包括26个数据
这些加起来不到70字节
关于堆栈的问题我不太懂,至于溢出这种问题该怎么查找啊?

使用特权

评论回复
5
bg6nw| | 2008-4-19 22:28 | 只看该作者

貌似中断程序没处理好

经过若干次中断后,堆栈溢出了

使用特权

评论回复
6
eledong|  楼主 | 2008-4-19 22:32 | 只看该作者

To 楼上

真巧,几乎同一个时间回复
请问有什么解决办法指点一下供参考么?

使用特权

评论回复
7
bg6nw| | 2008-4-19 22:54 | 只看该作者

中断处理中压栈多,弹出少

还有,子程序或中断套嵌等等,具体你要把代码贴出来请高手们看看。我也是个初学者,水平很低的菜鸟。

使用特权

评论回复
8
wkgong| | 2008-4-19 23:26 | 只看该作者

具体的说出工作过程

使用特权

评论回复
9
grady1125| | 2008-4-19 23:36 | 只看该作者

很正常

中断嵌套很容易死机,别以为51很厉害
最好在一个中断程序中关掉另一个中断

使用特权

评论回复
10
eledong|  楼主 | 2008-4-19 23:41 | 只看该作者

程序很长怕说不清楚,我先讲一下工作流程请各位帮忙分析

是一个电位控制电路,由单片机控制工作于两种模式,一是按键控制,一是速度控制,即通过INT1检测脉冲信号测算频率,查表后根据实际应用向驱动电路发送相应的控制信号(占用了一定时间)
按键控制与速度控制这两种模式通过INT0检测切换开关进行切换
故障表现为该切换开关只要切换达到一定次数就会死机

使用特权

评论回复
11
eledong|  楼主 | 2008-4-19 23:48 | 只看该作者

TO 9楼

同意!我是尽量关闭了
我都尽量避免在中断服务程序中调用函数的,好像说那样容易出问题

至于“最好在一个中断程序中关掉另一个中断”
除了优先级最高的INT0,其他的我也尽量能关的就关了

使用特权

评论回复
12
ntao0227| | 2008-4-19 23:55 | 只看该作者

嵌套调用了!

在速度控制时频繁调用INT1,在切换开关,进入INT0,容易嵌套调用中断。
可以减少INT1程序,同时在进入中断时,暂时关断另一中断试试。

菜鸟愚见!还望指教。

使用特权

评论回复
13
bg6nw| | 2008-4-20 08:24 | 只看该作者

设计思路不对头

在这种应用设计中,应尽量减少中断冲突,在明知自己是菜鸟的情况下,我会采取这样的思路来设计。
按键可以用中断;检测实时转速将脉冲接入计数器,不要开计数器中断,用查询的方法计算实时转速,软件写起来比两个外中断好糊弄。。。。

使用特权

评论回复
14
ntao0227| | 2008-4-20 14:49 | 只看该作者

楼上的方法好!

使用特权

评论回复
15
eledong|  楼主 | 2008-4-20 18:14 | 只看该作者

To 13楼

bg6nw 所说的方法可以理解为通过一定时间的查询,通过计数器测量脉冲的跳变次数,测的是频率

我所用的方法则是通过一个外部中断,以及定时器(其实为计数功能,但要配置为定时器的工作模式),检测两个相邻下降沿之间的时间间隔,测的是周期

只是思路不同而已,测周期的方法灵敏度会更高些
不过,把脉冲接到T0/T1,程序应该是会简单些
回头再试试看

使用特权

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

本版积分规则

6

主题

48

帖子

1

粉丝