Altera_Forum
Honored Contributor
21 years agoWhy Nios II don't execute my ISR?
Hi All:
I want implement a ISR in Nios II system, however, if I implement it with Nios HAL, everything is OK, the Isr call successfully, but if I implement it in alt_main(), without HAL, the interrupt never appear. I want to know whta's the problem here?. My C Code show below, thanks //------------------------# include "system.h"# include "altera_avalon_pio_regs.h"# include "alt_types.h"# include "altera_avalon_uart_regs.h"# include "sys/alt_irq.h" static void handle_key_interrupt(void* context,alt_u32 id) { /* Reset the edge capture register. */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0x0); IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0x55); } static void init_key_pio() { /* Recast the edge_capture pointer to match the alt_irq_register() function * prototype. */ /* Enable all 4 button interrupts. */ IOWR_ALTERA_AVALON_PIO_IRQ_MASK(BUTTON_PIO_BASE, 0x1); /* Reset the edge capture register. */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0x0); /* Register the interrupt handler. */ alt_irq_register( BUTTON_PIO_IRQ, 0x0, handle_key_interrupt ); } int main (void) __attribute__ ((weak, alias ("alt_main"))); int alt_main (void) { volatile int i; i=0; // alt_u8 led=0x01; // alt_u8 key; IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE, 0xf0); init_key_pio(); i=alt_irq_enabled(); while (1) { } return 0; } //-------------------------- yyd999