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

請問Nios interrupt問題?

// enable the computation
后应该等待中断处理啊,不然中断还没处理,你的主程序就运行完了

請問Nios interrupt問題?

Hi, 大家好,想請問一下設計nios 中斷時的問題。 下面是我的source code,*p是存放二個16bits的operand的register, *(p+1) 是用來觸發電路(也就是當*(p+1)為1的時後電路才開始運作),*(p+2) 是存放運算出來的結果的register。原本用polling的方式做是可以執行的。 現在我將電路加上irq signal,改用下面的source code 來執行,發現算出來的結 果只會是0,這種設計的方式是那裡錯了嗎?? 我設計的電路,它在運算結束後,irq signal的起來一個clock cycle,接 著就自動設回0 (不知道這樣會不會有問題^^)。其實我並不是非常清楚isr的設計方式 ,有高手可以跟我再說明一下嗎??因為我看了document還不是很了解。 謝謝大家了。 #include #include "excalibur.h" int x,y,i,z; int m = 0; int *p; int get_result(int context); // my isr int main(void) { int context = 0; printf("startCompute \n"); x=128; //first operand y=32; //second operand nr_installuserisr(na_mult_irq, get_result, context); //install isr p=0x500;; *p=(y<<16)+x; //combine two operands in a 32bits operands *(p+1)=1; // enable the computation m = z; // get the isr result !!? printf("%d * %d = %d\n" ,x,y,m); return 0; } int get_result(int context) // the isr routine { z = *(p+2); // get the computation result return z; }
nios 新手^^
你是指在enable computation之後要想辦法等待中斷處理完成嗎??
nios 新手^^
返回列表