Forum Discussion
Altera_Forum
Honored Contributor
9 years agopio interrupt not working
Hii , I'm new to the nios. i have a push button in my project which is connected to the pio ,which shouid generate interrupt whenever its get pressed. its falling edge irq. but interrupt...
Altera_Forum
Honored Contributor
9 years agoHave you checked the PIO settings in the SOPC builder/Qsys?
this example is from the Nios II software developers handbook Example 8–1. An ISR to Service a Button PIO Interrupt # include "system.h" # include "altera_avalon_pio_regs.h" # include "alt_types.h" # ifdef ALT_ENHANCED_INTERRUPT_API_PRESENT static void handle_button_interrupts(void* context) # else static void handle_button_interrupts(void* context, alt_u32 id) # endif { /* Cast context to edge_capture's type. It is important that this be declared volatile to avoid unwanted compiler optimization. */ volatile int* edge_capture_ptr = (volatile int*) context; /* * Read the edge capture register on the button PIO. * Store value. */ *edge_capture_ptr = IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE); /* Write to the edge capture register to reset it. */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE, 0); /* Read the PIO to delay ISR exit. This is done to prevent a spurious interrupt in systems with high processor -> pio latency and fast interrupts. */ IORD_ALTERA_AVALON_PIO_EDGE_CAP(BUTTON_PIO_BASE);