这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 际踅涣?mega64 mega64一次外部中断触发为什么会引起多次中断响应

共2条 1/1 1 跳转至

际踅涣?mega64 mega64一次外部中断触发为什么会引起多次中断响应

院士
2006-09-17 18:14:16     打赏
际踅涣?mega64 mega64一次外部中断触发为什么会引起多次中断响应



关键词: 际踅     mega64     一次     外部     中断     触发     为什么    

院士
2006-12-22 22:43:00     打赏
2楼
AVR外部中断问题:  
      
   我用MEGA64时遇到外部中断触发响应不正确问题,请各位大虾救命:  
     
   我用mega64外部INT5检测外部脉冲信号,中断信号输入脚方波脉冲,电平正常,无毛刺! cpu供电及外围电源也较好! 但却遇到了一个外部脉冲上升沿触发多次进入中断函数的问题.请问可能是什么原因!  
   程序如下所述,其中我用lgDrpCounter跟踪中断响应的次数(在外部用另一个函数显示),每次中断触发lgDrpCounter都增加2或3,或4。  


#include <Define.h>  
#include <exfunc.h>  
#include <main.h>  
#include <gValue.h>  
#include <mega64.h>  


/*============================================================================================  
说明:  输液控制相关数字资源初始化  
        输入 :无  
        输出 :无  
============================================================================================*/  
void InitTransfuseSource(void)  
{  
    /*禁止所有外部中断*/  
    EIMSK = 0;  
    EIFR  = 0xff;   /*清除外部中断标志*/  
    /*设置外部中断5为两次采样之间的上升沿产生一个中断*/  
    EICRB = 0x0c;     
    EICRA = 0;  
    /*许可外部中断5*/  
    EIMSK = 0x20;  
          SREG = SREG | 0x80  
}  




/*===============================================================  
外部中断5相应函数:(上升沿产生中断)  
功能: 每次方波上升沿点滴计数器lgDrpCounter加1  
================================================================*/  
interrupt [EXT_INT5]   void DropSensorInt(void)  
{  
   unsigned char i;  
     
   cgDrpTime = 0;  
   EIFR = EIFR | 0x20;  
   for(i=0; i<100; i++)   ;  
   for(i=0; i<100; i++)   ;  
   if(PINE.5==1)  
   {  
      bgDropDown = 1;  
      lgDrpCounter++;  
      ngMDrp++;  
   }  
}  


void main()  
{  
   /*全局变量初始化*/  
   InitTransfuseSource();  
   while(1)  
   {  
      ;     
   }  
}  
1: 你是否配置成边沿触发模式了? 2: 已经配置成功了:EICRB = 0x0c; 3: 自己再顶一下! 怎么都搞不叮啊! 救命啊 4: 终于搞定,用示波器器沿触发捕捉确实是输入波形上升沿有寄生纹波

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]