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

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

主程序没有延时,中断程序用nr_delay(1000)引入延时1s。主程序与中断程序区别是这么想的:没有按下按钮时主程序运行,数码管由于视觉效应会一直亮,按下按钮后则通过延时造成眨灯的效果。而实际上看到的效果是数码管一直亮,不对我的按钮事件做出相应。
我反复检查过引脚,按钮和pio引脚是同一个。
现在我对中断服务程序这一提法都有疑惑了。
我看过nios提供的pdf文档,还有例程lcd_deml.c里面,系统中断只需通过
nr_installuserisr()
就可开启,io中断和系统中断的开启应该不是问题。我按照高手的意见在主程序中加入串口信息
nr_uart_txchar('l',na_uart_0)做为主程序运行的标志,用
nr_uart_txchar('k',na_uart_0)做为中断程序运行的标志,发现主程序运行而中断程序根本不会因我的按键而跳转。
现在就想问sopc中的硬件配置应该如何检查,难道需要进行哪里配置的改动吗,望能告知
多谢高手了
看来这个nios的中断不令人满意,开发nios的人没有搞好。
所以我决定改用查询的方式来做原本打算中断做的事情。
真是扫兴啊!!

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

这几天想搞中断,用c语言,按照nios的pdf文件说的,从pio口引入中断,进行中断服务程序建立,源程序如下 #include "excalibur.h" void PIO_ISR(int context); int main(void) { int k,context=0; np_pio *pio = na_pio_0; nr_installuserisr(na_pio_0_irq,PIO_ISR, context); // install UART ISR pio->np_pioedgecapture = 0; // clear any existing IRQ condition pio->np_piointerruptmask = 0xf; // they all generate irq's! while(1) { for(k=0;k<10;k++) { na_pwm->np_piodata = k; } } return 0; } /************************************************************************/ void PIO_ISR(int context) { int i; np_pio *pio =(np_pio *)context; na_pio_0->np_pioedgecapture = 0;// clear the irq condition for(i=0;i<10;i++) { na_pwm->np_piodata = i; nr_delay(1000); } }// end of ISR 可以说已经原始的不能再原始的程序了,准备用按钮引入一个中断事件,让程序响应后跳转到PIO_ISR处去驱动与pio相连的数码管,但是下到板子后发现根本无法引入中断,不知各位高手能否赐教。
返回列表