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

跪问nios的中断问题,各位大虾救命啊

我想你可以考虑以下几点:
1、clr irq应该清status register,而不是edgecapture;
2、测试过程不应该凭视觉来判断是否产生中断,我想有更好的方法,如测试仪器或从串口输出信息;
3、系统中断是否已经开启,不能仅打开IO interrupt;起码在上面的代码中我没看到你打开系统中断!
4、关于硬件配置是否正确,还应检查下,特别是SOPC中的相关配置。
对待真正的朋友,就是给他最大的自由!
我早上也做了个试验,发现程序是在中断服务程序void _nr_isr_handler(void)中死机的,而且是执行到irq_handler(irq_context, i, interruptee_pc);
目前我也没想到会是什么原因,但肯定是这个调用失败的!
对待真正的朋友,就是给他最大的自由!
经过一天的测试,你这样改下就应该可以的:
把源文件nios_isr_handler.c中定义的
static int irq_context[NIOS2_NIRQ];
static nios_isrhandlerproc2 irq_handler [NIOS2_NIRQ];
初始化下,改为
//static
int irq_context[NIOS2_NIRQ]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
//static
nios_isrhandlerproc2 irq_handler [NIOS2_NIRQ]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
试试看吧,祝你好运!
对待真正的朋友,就是给他最大的自由!
在测试过程中,我在中断中监控数组irq_handler[],发现其值发生变化,故做此修改!    你试试看有没有别的办法,尽量不要修改SDK文件!    一起探讨!
对待真正的朋友,就是给他最大的自由!
其实中断响应并不快,如果要及时处理的还是用查询好!
对待真正的朋友,就是给他最大的自由!
返回列表