单片机中断响应慢的问题

JacksonLiang 2010-01-15 04:53:57
我使用STC的单片机在使用INT0脚(P3^2)时读取高低电平时,发现比其它P0、P1、P2脚的响应的速度都慢。我试过用P2^5脚位能够完整读取高低电平的波形,但采用INT0口读取时出现波形丢失现象,采用中断读取时也是一样。
我的程序是首先启用T1计数器累加,中断的时候读取累加数来判断高低电平的时间。


//INT0
EX0 = 1;
IT0 = 1;
PX0 = 1;

//T1计数
TMOD = 0x20; //8位自动加载
TH1 = 0xD1;
TL1 = 0xD1;
TR1 = 1;
ET1 = 1;
   EA = 1;


请问各位有没遇到过这种现象,INT0脚是单独连接,读取电平数据的。
...全文
631 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
JacksonLiang 2010-02-02
  • 打赏
  • 举报
回复
可能是电路的问题,我在INT1的中断脚测试没有问题。没上CSDN一段时间了,现在给分。
tcdzyq 2010-01-16
  • 打赏
  • 举报
回复
应不是芯片的问题,判断电平高低建议用边沿触发,无论是速度还是可靠性都可以提高.
WELLO_O 2010-01-15
  • 打赏
  • 举报
回复
单片机本身一般不会有问题,可能是程序设计没有优化。
你应该是想计算波形的周期,下面是一点设计方法,希望对你有用
1.采用外部中断是个不错的方法,不知道你的单片机能否设置上升沿和下降沿触发,如果可以,在上升沿触发进入中断程序后,要设置成下降沿触发,反之亦然;如果没有边沿触发,电平触发也是一样的,使用电平触发,要考虑触发电压的大小,因为电平不会突变,电平的变化需要时间,可以在信号输入的地方设计加速电容,加速信号的翻转,可以加快触发。
2.在中断服务程序不被打断的情况下,计算从中断触发到执行完中断服务程序大概要多久,这样能估计单片机能有效处理的信号的频率范围,频率低了当然能处理,频率高了,中断服务程序还没执行完,另一个翻转信号又来了,这样就检测不到,所以中断服务程序要尽量短。
3.根据第2点中的问题,当频率低时计算信号的周期,当频率高时计算信号的频率,导出周期,那么怎样知道信号频率的高低呢,可以多次计算周期,如果偏差大(设个阀值),说明有些信号没有检测到,简单点当检测到周期低于某个阀值时则认为信号的频率过高,转为计算频率的方法。信号的处理是要做些软件滤波的。
4.进入中断后该保存的数据赶快保存(计数器.etc),该清的清(中断标志.etc),该禁止的禁止(禁止计数,禁止其它高优先级中断),当记录n个周期的信号后,把相关中断都关掉,再专门做数据处理。处理完后你想继续采集数据在打开中断,采用自动重装不太好,设置一个定时器,并开定时器中断,如果波形周期长,定时器肯定要中断n次,这时要计数定时器中断的次数,来确定外部中断一次的总时间。进入外部立即停止计数,再保存数据,然后重装....and so on 。
呵呵,细节挺多,一般要多考虑优化外围硬件或软件设计,芯片本身的设计比较成熟,不会有什么问题,当然现在次品挺多的,有时也应该怀疑芯片有问题,再换芯片调试...
Great_Bug 2010-01-15
  • 打赏
  • 举报
回复
如果禁止INT0中断,该是会和其它管脚相同
如果用中断,应该会慢一些
lbing7 2010-01-15
  • 打赏
  • 举报
回复
类似的程序写过,但是没有发现慢的问题

另外,中断你开了有没做处理,中断的服务有没有写?

codesnail 2010-01-15
  • 打赏
  • 举报
回复
中断如果响应的慢,就与硬件内部有关了,电平从低到高建立需要时间,上拉or下拉?
lan120576664 2010-01-15
  • 打赏
  • 举报
回复
你是说你用INT0脚来读取高低电平?

27,370

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧