Hi frnds,
I am working on Cypress EZ-USB CY768013A while analyzing the code i found many interrupts with same interrupt number as " interrupt 0 " , though this EZ Cypress usb chip has AUTOVECTOR facility, I would like to know how all these interrupt functions are executed with same Interrupt number in EZ CYPRESS USB chip ???
void ISR_Sudav(void) interrupt 0 { printf("Data\n"); GotSUD = TRUE; // Set flag EZUSB_IRQ_CLEAR(); USBIRQ = bmSUDAV; // Clear SUDAV IRQ } // Setup Token Interrupt Handler void ISR_Sutok(void) interrupt 0 { printf("Token\n"); EZUSB_IRQ_CLEAR(); USBIRQ = bmSUTOK; // Clear SUTOK IRQ } void ISR_Sof(void) interrupt 0 { printf("SOF\n"); EZUSB_IRQ_CLEAR(); USBIRQ = bmSOF; // Clear SOF IRQ } void ISR_Ures(void) interrupt 0 { printf("Ureq\n"); if (EZUSB_HIGHSPEED()) { pConfigDscr = pHighSpeedConfigDscr; pOtherConfigDscr = pFullSpeedConfigDscr; } else { pConfigDscr = pFullSpeedConfigDscr; pOtherConfigDscr = pHighSpeedConfigDscr; } EZUSB_IRQ_CLEAR(); USBIRQ = bmURES; // Clear URES IRQ } void ISR_Susp(void) interrupt 0 { printf("Sup"); Sleep = TRUE; EZUSB_IRQ_CLEAR(); USBIRQ = bmSUSP; }
"they have disabled AutoVector of interrupts, with #pragma NOIV"
No: that has nothing to do with Auto-Vectoring!
That is a standard Keil feature that controls vector generation for any 8051 processor.
Quite possibly, they need to use that to disable Keil's standard vector generation so that their own proprietary Auto-Vector generation can work.
This will be specific to the Cypress chips, so you need to study the Cypress documentation about this!