共2条
1/1 1 跳转至页
际踅涣?mega64 mega64一次外部中断触发为什么会引起多次中断响应
问
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: 终于搞定,用示波器器沿触发捕捉确实是输入波形上升沿有寄生纹波
我用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 跳转至页
回复
| 有奖活动 | |
|---|---|
| 这个春节你犒赏自己什么了?分享你的故事,有奖征集 | |
| 2026年“我要开发板活动”第三季,开始了! | |
| 硬核工程师专属补给计划——填盲盒 | |
| “我踩过的那些坑”主题活动——第002期 | |
| 【EEPW电子工程师创研计划】技术变现通道已开启~ | |
| 发原创文章 【每月瓜分千元赏金 凭实力攒钱买好礼~】 | |
| 【EEPW在线】E起听工程师的声音! | |
| 高校联络员开始招募啦!有惊喜!! | |
我要赚赏金打赏帖 |
|
|---|---|
| Gravity:中英文语音合成模块V2.0及其串口控制被打赏¥24元 | |
| 全彩色度变化图的绘制被打赏¥27元 | |
| 【FreeRtos】FreeRtos任务栈的生长方向管理方式被打赏¥20元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】LVGL添加输入设备:EC11旋转编码器被打赏¥39元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】RA8D1部署FreeRTOS+LVGL被打赏¥33元 | |
| 空气质量检测器设计与实现被打赏¥24元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】LWIP进行UDP、TCP、HTTP、MQTT功能联合测试被打赏¥41元 | |
| 【瑞萨RA8D1 LVGL/LWIP评测】RA8D1部署FreeRTOS+LWIP被打赏¥36元 | |
| RTOS怎么选?让我来给你答案!被打赏¥15元 | |
| 【S32K3XX】Flash驱动使用被打赏¥26元 | |
我要赚赏金
