首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

下降沿中断,似乎跟示波器的探头有关系

下降沿中断,似乎跟示波器的探头有关系

关于下降沿中断

发现一个很奇怪的现象

用下降沿(由5V变为0的信号)触发中断,该中断为void EInt1_OnInterrupt(void),如下所示。中断发生后iNum++,还有其他一些工作。

这时候,如果先把一个5V的信号加到该管脚(pad09s12hz64pin45),然后在断开该信号,这时候引起一个中断,iNum加一。

但是,如果用一根金属丝触发该管脚,这时候,这个中断会连续的发生,iNum不断递增,知道把该金属丝移开。这是怎么回事呢?难道金属丝还会产生下降沿吗?还有,如果用示波器的探头放到该管脚,这时候并不触发中断。大家说是不是由于示波器探头有去耦处理?于是我并联一个小电容在管脚和地之间,却不能触发中断了。这是什么原因呢?

这个中断我是用PE做的。版本是4.7

/* MODULE Events */

#include "Cpu.h"

#include "Events.h"

#pragma CODE_SEG DEFAULT

extern char sFlag;//进样器动作前的标志位

extern int iNum;//当前第几个试管

extern int j;//当前第几个高()电平

extern int jMP1;//电机1已经正转的次数

extern int jMP2;//电机2已经正转的次数

extern int jMP3;//电机3已经正转的次数

extern int jMN1;//电机1已经反转的次数

extern int jMN2;//电机2已经反转的次数

extern int jMN3;//电机3已经反转的次数

extern int iTx;//控制X方向电机M1转动的方波周期

extern int iTy;//控制X方向电机M2转动的方波周期

extern int iTz;//控制X方向电机M3转动的方波周期

extern int imT;

extern void PerPulse(int mP); //通过延迟产生控制电机转动的周期

unsigned int iTT,time1,time2;//

//int ii=0;

/* word result;

word myreturn,oldData;

float one_loop_us;

//char isTwo;//判读是不是连续两次发生中断*/

/*

** ===================================================================

** Event : EInt1_OnInterrupt (module Events)

**

** From bean : EInt1 [ExtInt]

** Description :

** This event is called when an active signal edge/level has

** occurred.

** Parameters : None

** Returns : Nothing

** ===================================================================

*/

//PAD0外部信号下降沿触发

// 在第2.5",1号泵通电,继电器输出5V电平.这里触发外部中断的,就是这个信号的变化

void EInt1_OnInterrupt(void)

{ iNum++;

/* place your EInt1 interrupt procedure body here */

FC161_Enable();

// IEE1_SetWord(0x808,iNum);

// IEE1_GetWord(0x808,&result);

// oldData=result;

//ii++;

//IEE1_SetWord(0x808,0xAA);

//IEE1_GetWord(0x808,&result);

//myreturn=result;

sFlag='T';

//for (iTT = 0; iTT < 60000; ++iTT); /* for-cycle */

//FC161_GetTimeUS(&time1);

/* get measured time of whole for-cycle */

FC161_Reset(); /* reset the counter */

}

发在这里,请各位看看,遇到过类似的问题没有,是不是示波器的探头里充分考虑了去耦等因素的影响?
第一次在本版发帖求助,感觉我的问题应该能在本版得到解决,呵呵
[em01][em01][em01]

是不是示波器的探头里充分考虑了去耦等因素的影响?

================================================

示波器探头里有很好的去耦合电路,而且所用的器件都是良品。

于是我并联一个小电容在管脚和地之间

=========================================

电容本身的特点是畜能和释放电能,当下跳沿发生时(管脚电位“立刻”从5V变为0V),电容将释放平时存储的电能,延缓管脚电位的变化,这样就破坏了下跳沿的“陡峭”程度,使得下跳沿成一个缓慢下降的斜坡。这样有可能导致芯片误认为没有中断发生(因为你设置的是芯片对“边沿”敏感,而边沿敏感型的要求边沿足够地陡峭!)

建议你用定时查询的方式来扫描管脚的状态,最好不用外部中断,因为干扰带来的“毛刺”会使得外部中断误触发。

[此贴子已经被作者于2008-12-25 12:07:55编辑过]

人要保持斗志,并有疯狂的追求,生活才会精彩! QQ:24387110 手机:13871563876
返回列表