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

求助:设置中断

求助:设置中断

各位仁兄,偶设置了四个LED和四个KEY,用EP1C6Q240C8 UP3开发板,四位KEY[3..0]分别对应48、49、57、62脚,用板上的开关SW4 、SW5、SW6、SW7,LED测试过没有问题。用下面这个简单的程序,在按钮引入中断的时候,没有相应响应。不知道为什么?急啊。不是板上有问题吧?


#include "system.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"


#include <stdio.h>
#include <unistd.h>
#include "sys/alt_irq.h"



volatile  int edge_capture;  
                       
static void handle_button_interrupts( void* context,alt_u32 id)
{
  volatile int* edge_capture_ptr = (volatile int*) context;
   *edge_capture_ptr = IORD_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE);
   IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE, 0);
   IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY_BASE, 0x0f);
}


void int_ini()
{
  void* edge_capture_ptr = (void*) &edge_capture;
  IOWR_ALTERA_AVALON_PIO_IRQ_MASK(PIO_KEY_BASE, 0x0f);
  IOWR_ALTERA_AVALON_PIO_EDGE_CAP(PIO_KEY_BASE, 0x00);
  alt_irq_register(PIO_KEY_IRQ, edge_capture_ptr,handle_button_interrupts);
  edge_capture = 0;
 }


int main (void) __attribute__ ((weak, alias ("alt_main")));


int alt_main (void)
{
   int_ini();
   alt_u8 led = 0x00;
   volatile int i=0;
   edge_capture=0;
   while(edge_capture==0)
   {
            led=0x0f;
            IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);
            i = 0;
            while (i<200000)
                  i++;
     
   }
   while (1)
   {
      
         led=0x00;
         IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE, led);
         i = 0;
         while (i<200000)
                i++; 
   }


   return 0;
}


 

[此贴子已经被作者于2006-3-2 11:15:07编辑过]

多多交流!谢谢!
就代码上看,是没有什么问题的。
在交流中前进,共同实现nios的应用。
老问题了
alt_main和main的问题。。。
换成main试试看
问一下,什么样的中断不需要安装??
你所谓的安装是指什么呢
在交流中前进,共同实现nios的应用。
就是自定义router函数的中断
谢谢大家这么热情帮忙,终于解决问题了。
解决途径:
1 main()与alt_main()差别:在NiosII中使用alt_main()时编译器不会加入初始化代码,也就是说系统中中断的开启,串口波涛率等的设置必须手工完成;而main()会初始化。
2 当使用main()作为程序入口时,可能存在片上存储器容量不足,可以选择相对大些的容量,并做如下一些设置:
选择此C文件的Properties 在C/C++ Build里面选择Release,尽可能不占资源选择syslib,在System Library勾选Small Library和Reduce device drivers

[此贴子已经被作者于2006-3-6 21:48:45编辑过]

多多交流!谢谢!
返回列表