打印

请问AT89S52的中断输入INT0出现丢中断现象会是什么原因

[复制链接]
4552|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
boris|  楼主 | 2007-4-2 23:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在在用Atmel的89S52控制一个芯片。这个芯片(3.3V供电)有一个1kHz的中断送给89S52,中断的低电平脉冲宽度只有150ns。(89S52的XTAL输入的是24M晶振信号)

系统工作不正常,经过分析发现89S52有丢中断的现象。在89S52中,我采用下降沿触发的中断响应方式,当中断触发时,就在P3.1口送出一个高电平脉冲,其它任何事情都没干。用示波器观测P3.1口,发现每连续的5、6个脉冲后就有近10ms的连续低电平,看上去象是有好几个中断丢掉了。
不知是否芯片的中断输出脉冲太窄了还是其它的原因。

相关帖子

沙发
computer00| | 2007-4-2 23:51 | 只看该作者

好象是在每个机器周期检查一次

使用特权

评论回复
板凳
ayb_ice| | 2007-4-3 08:10 | 只看该作者

DATASHEET

DATASHEET说的很清楚,要养成看资料的习惯.

使用特权

评论回复
地板
ayb_ice| | 2007-4-3 09:14 | 只看该作者

随便说说

  高低电平必须分别保持至少一个机器周期...
  中断程序要简短,执行快...

使用特权

评论回复
5
xiaopet| | 2007-4-3 11:37 | 只看该作者

3.3V?

AT89S52的工作电压是5V吧,我以前用过,但没有用过3。3V的
LZ是不是工作电压太低了?而且你还用了24M的晶振,我估计这里出了问题!

使用特权

评论回复
6
boris|  楼主 | 2007-4-3 15:17 | 只看该作者

89S52是5V电源

to xiaopet
3.3V是指与89S52对接的芯片的电源。也就是说送给89S52的中断信号的高电平为3.3V,低电平为0V。89S52的电源用的是5V

我现在找了一个38M的晶振给89S52,似乎系统工作正常了(还在调试中)。
但如果是高电平和低电平最少保持一个机器周期,那么用24M晶振时的中断宽度应该够了。150ns的低脉冲宽度超过了24M周期的三倍。疑惑中……

使用特权

评论回复
7
hugerat| | 2007-4-3 15:46 | 只看该作者

呵呵,中断处理也要用掉一些机器周期的。

呵呵,中断处理也要用掉一些机器周期的。

使用特权

评论回复
8
computer00| | 2007-4-3 15:56 | 只看该作者

晕菜了...89S52是12分频的啊,24M的时钟频率,机器周期为500ns.

使用特权

评论回复
9
xwj| | 2007-4-3 15:57 | 只看该作者

晕~~~LZ你先搞清楚51的“一个机器周期”是多长时间再说

使用特权

评论回复
10
zgl7903| | 2007-4-3 20:27 | 只看该作者

使用个触发器做脉冲展宽吧,否则肯定是响应不过来的

使用特权

评论回复
11
itspy| | 2007-4-3 23:10 | 只看该作者

my idea

这是我的第一帖.我顶上了,说一点我的观点。如有不对,请多包含 ^-^.
正如hugerat所说,处理中断也是要一些周期的,根据MCS-51的中断处理,外部中断最断响应时间为3个机器周期,最长的响应为8个周期。而且至于你用的机器周期是多少,是很关键的,关于AT89S52,我想也和MCS-51兼容的吧(没用过,不太清楚)。

使用特权

评论回复
12
boris|  楼主 | 2007-4-4 12:53 | 只看该作者

有没有办法使AT89S52能响应150ns低脉冲宽度的中断?

先谢谢大家的答复!
单片机我没怎么用过,所以确实不熟悉。之前是用DSP,现在要求降成本,所以才改用单片机试试。

今天找了一个低电平宽度可控的1kHz时钟送给AT89S52的INT0,通过观测P3.1口,发现当低电平宽度在500ns以上时,P3.1口的信号就没有缺口了。(XTAL口输入的是24M时钟。另外,如果设置AT89S52的中断为电平触发,好像需要700多ns以上)
不知道有没有办法使AT89S52能保证采到150ns宽度的低脉冲,比如说机器周期能否调整?或者换用哪个型号的MCU可以做到?(和AT89S52对接的芯片的中断输出宽度无法调整,只有150ns)。中断发生的频率最高为1kHz,只要能使MCU采到低脉冲,其它的处理应该是来得及的。

使用特权

评论回复
13
ayb_ice| | 2007-4-4 13:16 | 只看该作者

随便说说

silabs c8051fx可以...

使用特权

评论回复
14
xwj| | 2007-4-4 13:37 | 只看该作者

随便做个单稳态电路展宽一下脉冲即可

c8051fx太贵了

使用特权

评论回复
15
ayb_ice| | 2007-4-4 13:50 | 只看该作者

silabs c8051fx稍贵

silabs c8051fx稍贵,我的项目一直在用...
我们的供应商是"益登科技"...
郑重声明: 不是广告

使用特权

评论回复
16
computer00| | 2007-4-4 16:40 | 只看该作者

说不定搞个RC延迟都把它搞出来了。

使用特权

评论回复
17
ayb_ice| | 2007-4-4 16:45 | 只看该作者

随便说说

  外接一单稳态电路可以...

使用特权

评论回复
18
boris|  楼主 | 2007-4-4 21:48 | 只看该作者

如果能用RC延迟搞出来就好了

to computer00
我也想过用RC延迟来拓宽低脉冲宽度,但怎么都想不到比较好的实现方法。
如果是输出直接串一个电阻+电容到地,电阻和电容的中间接MCU的中断输入脚,则边沿要变得很缓慢才能把150ns明显展宽,这样做似乎可靠性很差。而且150ns和500ns差距有点大。

这里补充一点信息,看大家能否帮忙想到个招数:
对接芯片输出的中断为150ns的0V低电平脉冲。这个中断不是线与中断,即3.3V高电平不是靠板上的上拉电阻得到,而是对接芯片直接输出了3.3V高电平。

使用特权

评论回复
19
ayb_ice| | 2007-4-5 07:54 | 只看该作者

用4013做个计数器

用4013做个计数器(分频)...

使用特权

评论回复
20
JJG| | 2007-4-6 09:16 | 只看该作者

要用速度快的单片机.

C8051F020,STC12C2052等单周期指令的单片机都可以.用脉冲展宽法也可,但要视你的实际情况看是否会对其它方面有影响.

使用特权

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

本版积分规则

6

主题

30

帖子

0

粉丝