Altera_Forum
Honored Contributor
20 years agospurious ISR
We have a HW interrupt signal that connects to this PIO input on the SOPC builder symbol from a firmware symbol logic block.
This PIO input options is checked to "generate IRQ" (level type) I have signal tapped this I/O signal and it does not falsely assert. We has an ISR that is activated by this PIO signal. When we executes OSStart (the bring-up of the MicroCOSII operating system), the ISR fires immediately. We know it is occurring because the "WizardLinkMessagingIsr" runs once at startup. This is our interrupt setup, We followed some sample code. This is the code that fires the interrupt immediately even though the hardware signal is definitely "LOW". Are we doing something incorrectly here? NOTE: After this one spurious cycle, it works correctly. Has anyone seen this and figured ut howe to stop it? 1 static void InitInterrupt() 2 { 3 printf("Enabling interrupt's\n"); 4 /* Recast the edge_capture pointer to match the alt_irq_register() function 5 * prototype. */ 6 void* edge_capture_ptr = (void*) &edge_capture; 7 /* Enable WizLink_MsgIntrpt_pio interrupt. */ 8 IOWR_ALTERA_AVALON_PIO_IRQ_MASK(WIZLINK_MSGINTRPT_PIO_BASE, 0x1); 9 /* Reset the edge capture register. */ 10 IOWR_ALTERA_AVALON_PIO_EDGE_CAP(WIZLINK_MSGINTRPT_PIO_BASE, 0x0); 11 /* Register the interrupt handler. */ 12 alt_irq_register( WIZLINK_MSGINTRPT_PIO_IRQ, edge_capture_ptr, WizardLinkMessagingIsr ); } Has anyone seen this and figured ut howe to stop it? thanks, Shawn