打印

51单片机外部中断运用问题?

[复制链接]
6596|26
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
7120223|  楼主 | 2010-4-18 20:55 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在使用外部中断1时,定义为下降沿触发。硬件如图。但是现在有个问题,偶尔会出现,同一个信号来触发时进入中断2次。因为每次来一个信号我进入中断一次要计数一下的。现在一个信号来了竟然会出现两次触发,使计数出错。不知道问题出在哪里?

相关帖子

沙发
BitFu| | 2010-4-18 21:31 | 只看该作者
估计是信号抖动造成的。

使用特权

评论回复
板凳
原野之狼| | 2010-4-19 00:18 | 只看该作者
用示波器看下你的信号是否纯正

使用特权

评论回复
地板
ayb_ice| | 2010-4-19 09:08 | 只看该作者
可以通过软件处理

使用特权

评论回复
5
7120223|  楼主 | 2010-4-19 09:16 | 只看该作者
应为转动距离比较小,没有数字示波器,用的是最老式的那种模拟示波器,看不出什么信号波动,连续转动时是可以看出没有信号波动的。通过软件来看,肯定是信号波动了,软件怎么处理?是两者进入中断的时间来判断的么?

使用特权

评论回复
6
ayb_ice| | 2010-4-19 10:23 | 只看该作者
如果再次中断时间太短(可以分析正常中断间隔)则忽略即可

使用特权

评论回复
7
wsjhy1| | 2010-4-19 16:11 | 只看该作者
如果是以上问题可以加个滤波电容看看

使用特权

评论回复
8
7120223|  楼主 | 2010-4-19 16:15 | 只看该作者
电容?加在何处?电源端么,信号端是不能加的吧,您是怀疑在发信号的时候,电源波动了导致信号来了两次是吧?

使用特权

评论回复
9
sheriff| | 2010-4-19 16:23 | 只看该作者
楼主应该说清楚输入的是一个什么信号,这个输入信号跟转动是什么关系?

使用特权

评论回复
10
zdhlixiang2006| | 2010-4-19 16:54 | 只看该作者
用示波器看看你的波形再说吧

使用特权

评论回复
11
hxlwjn| | 2010-4-19 16:55 | 只看该作者
外部中断用的是电平触发模式还是脉冲触发模式?

使用特权

评论回复
12
yanwang67| | 2010-4-19 17:24 | 只看该作者
两种处理方法:1.对信号进行处理,估计是信号下降沿出现抖动
              2.用单片机延时处理下降沿信号

使用特权

评论回复
13
lhzw2001| | 2010-4-19 17:55 | 只看该作者
消陡处理一下再看看

使用特权

评论回复
14
David_ming| | 2010-4-19 17:58 | 只看该作者
加个电容试试

使用特权

评论回复
15
津sgb996442717| | 2010-4-20 11:12 | 只看该作者
加个电容试试.....

使用特权

评论回复
16
manning1111| | 2010-4-20 15:12 | 只看该作者
触发后,先关中断休息一会,就避过去了两次触发。

使用特权

评论回复
17
nathenlu| | 2010-4-20 15:45 | 只看该作者
延时消抖动看看

使用特权

评论回复
18
7120223|  楼主 | 2010-4-21 21:59 | 只看该作者
2)        边沿触发方式时,中断标志寄存器锁存了中断请求。中断口线上一个从高到低的跳变将记录在标志寄存器中,直到CPU响应并转向该中断服务程序时,由硬件自动清除。因此当CPU正在执行同级中断(甚至是外部中断本身)或高级中断时,产生的外部中断(负跳变)同样将被记录在中断标志寄存器中。在该中断退出后,将被响应执行。如果你不希望这样,必须在中断退出之前,手工清除外部中断标志。

3)        中断标志可以手工清除。一个中断如果在没有得到响应之前就已经被手工清除,则该中断将被CPU忽略。就如同没有发生一样。
--------------------------------------------------------------------------------------------------------------------
今天我试了,进入中断,关闭中断,我在主程序中循环扫描了N次,在开中断,不管N是多大,单片机还是会进入这个中断,产生误动作。
今天我在网上看到上面关于中断的描述,如果按照他描述所说,如果连续有两个中断触发啦,第一个触发程序开始中断了,等这个中断结束,下一个中断也会接着触发,那么我是否要在第一个中断函数要结束前,清零一下中断标志呢?

使用特权

评论回复
19
lpydidi| | 2010-4-21 22:39 | 只看该作者
这个两次触发到底怎么产生的。看了半天也不知道大家到底什么意见

使用特权

评论回复
20
dengm| | 2010-4-22 19:25 | 只看该作者
1.    进入中断,关闭中断
2.    把中断方式改为"电平"  !!!!
3.   在主程序中循环扫描了N次
4.   把中断方式改为"边缘"  !!!!
5.   开中断

使用特权

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

本版积分规则

105

主题

389

帖子

0

粉丝