Forum Discussion
Altera_Forum
Honored Contributor
21 years agoHello yoland,
Try the following code if you would like that your LED register is changing from 0xf0 to 0x55 after pressing the button. Please tell me the state of your LED register after executing the code. # 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(KEY_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(KEY_PIO_BASE, 0x1); /* Reset the edge capture register. */ IOWR_ALTERA_AVALON_PIO_EDGE_CAP(KEY_PIO_BASE, 0x0); /* Register the interrupt handler. */ alt_irq_register( KEY_PIO_IRQ, NULL, 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; }