void USB_ISR(void) { *pu8trace++=0xCC; //PMC_VLPR_Exit(); FLAG_SET(1,GPIOC_PDOR); if(FLAG_CHK(USB_ISTAT_USBRST_SHIFT,USB0_ISTAT)) { // Clear Reset Flag //USB_ISTAT = USB_ISTAT_USBRST_MASK; // Handle RESET Interrupt USB_Reset_Handler(); // Clearing this bit allows the SIE to continue token processing // and clear suspend condition //CTL_TXSUSPEND_TOKENBUSY = 0; //FLAG_CLR(USB_CTL_TXSUSPENDTOKENBUSY_SHIFT,USB_CTL); // No need to process other interrupts //return; } if(FLAG_CHK(USB_ISTAT_SOFTOK_SHIFT,USB0_ISTAT)) { USB0_ISTAT = USB_ISTAT_SOFTOK_MASK; } if(FLAG_CHK(USB_ISTAT_STALL_SHIFT,USB0_ISTAT)) //if(INT_STAT_STALL && INT_ENB_STALL_EN ) { USB_Stall_Handler(); } if(FLAG_CHK(USB_ISTAT_TOKDNE_SHIFT,USB0_ISTAT)) { FLAG_SET(USB_CTL_ODDRST_SHIFT,USB0_CTL); USB_Handler(); FLAG_SET(USB_ISTAT_TOKDNE_SHIFT,USB0_ISTAT); } if(FLAG_CHK(USB_ISTAT_SLEEP_SHIFT,USB0_ISTAT)) //if(INT_STAT_SLEEP && INT_ENB_SLEEP_EN_MASK) { // Clear RESUME Interrupt if Pending //INT_STAT = INT_STAT_RESUME_MASK; //u8ISRCounter++; //FLAG_SET(USB_ISTAT_RESUME_SHIFT,USB_ISTAT); // Clear SLEEP Interrupt FLAG_SET(USB_ISTAT_SLEEP_SHIFT,USB0_ISTAT); //INT_STAT = INT_STAT_SLEEP_MASK; //FLAG_SET(USB_INTEN_RESUME_SHIFT,USB_ISTAT); //INT_ENB_RESUME_EN = 1; } if(FLAG_CHK(USB_ISTAT_ERROR_SHIFT,USB0_ISTAT)) //if(INT_STAT_ERROR && INT_ENB_ERROR_EN ) { FLAG_CHK(USB_ISTAT_ERROR_SHIFT,USB0_ISTAT); //printf("\nUSB Error\n"); //INT_STAT_ERROR=1; } }
// Interrupt Service Routines //------------------------------------------------------------------------------ //------------------------------------------------------------------------------ //! \brief Handler for the USB controller interrupt //! //! Defers the call to the USB_Handler function. //------------------------------------------------------------------------------ void ISR_Driver(void) { USB_Handler(&sUsb); }