| | 网站首页 | 新闻 | SOPC | FPGA | DSP | ARM | 嵌入式操作系统 | 下载 | 网上商城 | 芯片价格参考 | 留言 | 论坛 | 网络协议 | 驱动设计 | 购买指南-HowtoBuy | | |
![]() |
![]() |
| 您现在的位置: FPGA开发板 FPGA 开发板 SOPC开发板 DSP开发板 视频开发板 -嵌入式控制研究室 >> SOPC >> Nios >> 文章正文 |
|
|||||
| nios ii的 中断 | |||||
| 作者:佚名 文章来源:互联网 点击数: 更新时间:2006-7-10 | |||||
|
the corresponding PIO input port. Interrupt behavior depends on the hardware configuration of the PIO core。 几点重要的: 1. 中断io的方向 2. 中断功能的enable 3. 写一个 中断响应函数EXT_INT8_IRQ_ISR 4. 调用alt_irq_register()注册 中断响应函数EXT_INT8_IRQ_ISR 相关文档 ..\altera\kits\nios2_51\documents\n2sw_nii5v2.pdf //软件 ..\altera\kits\nios2_51\documents\n2sw_nii5v3.pdf //硬件 #include <stdio.h> #include <string.h> #include "io.h" #include "system.h" #include "altera_avalon_pio_regs.h" #include "alt_types.h" #include "sys/alt_irq.h" volatile alt_irq_context g_context; void test_Led(alt_u32 dwDelay); void Init_Ext_interrupt(); //C:\altera\kits\nios2_51\documents\n2sw_nii5v2.pdf static void EXT_INT8_IRQ_ISR(void * context,alt_u32 id) { volatile int* g_context_ptr = (volatile int*) context; IOWR_ALTERA_AVALON_PIO_IRQ_MASK(EXT_INT8_BASE, 0x0); printf("disable interrupt\n"); *g_context_ptr = IORD_ALTERA_AVALON_PIO_EDGE_CAP(EXT_INT8_BASE); printf("edge capture register in *context.=%x\n",*g_context_ptr); switch (*g_context_ptr) { case 0x10: printf("button1 is pressed\n"); break; case 0x20: printf("button2 is pressed\n"); break; default: break; } IOWR_ALTERA_AVALON_PIO_EDGE_CAP(EXT_INT8_BASE, 0); printf("Reset edge capture register\n"); IOWR_ALTERA_AVALON_PIO_IRQ_MASK(EXT_INT8_BASE,0x30);//set two button to 0 ensable interrupts //test_Led(500000); } int main() { alt_u8 led = 0x2; alt_u8 loop = 5; volatile int i; printf("alt_main() \n"); while(loop--) { printf("while(loop=%d) \n" , loop); test_Led(500000); } Init_Ext_interrupt(); while (1) { printf("while (1)\n"); test_Led(5000000); } return 0; } void test_Led(alt_u32 dwDelay) { unsigned char led=0x05; unsigned long i = 8; usleep(dwDelay); IOWR(LED_BASE,1,0xFF); IOWR(LED_BASE,0,led); //printf("test_Led() \n");// usleep(dwDelay); led =~led; IOWR(LED_BASE,0,led); } void Init_Ext_interrupt() { printf("Init_Ext_interrupt() Enter\n"); //-- Reset the edge capture register. IOWR_ALTERA_AVALON_PIO_EDGE_CAP(EXT_INT8_IRQ, 0x0); //-- Set derection as input IOWR_ALTERA_AVALON_PIO_DIRECTION(EXT_INT8_BASE,0x00);//input //-- enable bit5 and bit4 to implement interrupt IOWR_ALTERA_AVALON_PIO_IRQ_MASK(EXT_INT8_BASE,0x30);//set two button to 0 ensable interrupts //-- register irq_function alt_irq_register(EXT_INT8_IRQ,(void*)&g_context,EXT_INT8_IRQ_ISR); //-------- printf("Init_Ext_interrupt() Exit\n"); } //------------------------------------------------------------------------------- //-- Result //------------------------------------------------------------------------------- nios2-terminal: connected to hardware target using JTAG UART on cable nios2-terminal: "ByteBlasterII [LPT1]", device 1, instance 0 nios2-terminal: Warning: The JTAG cable you are using is not supported for Nios nios2-terminal: II systems. You may experience intermittent JTAG communication nios2-terminal: failures with this cable. Please use a USB Blaster revision B nios2-terminal: cable or another supported cable. Please refer to the file nios2-terminal: errata.txt included in the Nios II development kit documents nios2-terminal: directory for more information. nios2-terminal: (Use the IDE stop button or Ctrl-C to terminate) alt_main() while(loop=4) while(loop=3) while(loop=2) while(loop=1) while(loop=0) Init_Ext_interrupt() Enter Init_Ext_interrupt() Exit while (1) disable interrupt edge capture register in *context.=2f Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register while (1) disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register while (1) disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register while (1) disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register while (1) disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register while (1) disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register while (1) disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=10 button1 is pressed Reset edge capture register while (1) disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register disable interrupt edge capture register in *context.=20 button2 is pressed Reset edge capture register while (1) while (1) while (1) |
|||||
| 文章录入:fengfeiyi 责任编辑:fengfeiyi | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| SOPC技术在电力机车改造中的… 基于SOPC技术的核信息远程采… 把SOPC Builder用于非Nios系… SOPC自定义模块的添加和接口… NiosII开发常见问题 应用SoPC Builder开发电子系… niosII初学者无痛起步 nios flash read/write sopc Flash Programmer,nios… 基于μClinux的SoPC应用系统… |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 | | |
![]() |
Copyright © 2005www.21control.com 嵌入式控制技术研究室 版权所有 站长:康草科技 |