?? usbjtag.c
字號:
AUTOPTR1L = LSB( EP2FIFOBUF ); for(i=0;i<n;) { if(ClockBytes > 0) { BYTE m; m = n-i; if(ClockBytes < m) m = ClockBytes; ClockBytes -= m; i += m; if(WriteOnly) /* Shift out 8 bits from d */ { while(m--) ShiftOut(XAUTODAT1); } else /* Shift in 8 bits at the other end */ { while(m--) OutputByte(ShiftInOut(XAUTODAT1)); } } else { BYTE d = XAUTODAT1; WriteOnly = (d & bmBIT6) ? FALSE : TRUE; if(d & bmBIT7) { /* Prepare byte transfer, do nothing else yet */ ClockBytes = d & 0x3F; } else { /* Set state of output pins */ TCK = (d & bmBIT0) ? 1 : 0; TMS = (d & bmBIT1) ? 1 : 0; TDI = (d & bmBIT4) ? 1 : 0; /* Optionally read state of input pins and put it in output buffer */ if(!WriteOnly) OutputByte(2|TDO); }; i++; }; }; SYNCDELAY; EP2BCL = 0x80; // Re-arm endpoint 2 };}BOOL TD_Suspend(void) // Called before the device goes into suspend mode{ return(TRUE);}BOOL TD_Resume(void) // Called after the device resumes{ return(TRUE);}//-----------------------------------------------------------------------------// Device Request hooks// The following hooks are called by the end point 0 device request parser.//-----------------------------------------------------------------------------BOOL DR_GetDescriptor(void){ return(TRUE);}BOOL DR_SetConfiguration(void) // Called when a Set Configuration command is received{ Configuration = SETUPDAT[2]; return(TRUE); // Handled by user code}BOOL DR_GetConfiguration(void) // Called when a Get Configuration command is received{ EP0BUF[0] = Configuration; EP0BCH = 0; EP0BCL = 1; return(TRUE); // Handled by user code}BOOL DR_SetInterface(void) // Called when a Set Interface command is received{ AlternateSetting = SETUPDAT[2]; return(TRUE); // Handled by user code}BOOL DR_GetInterface(void) // Called when a Set Interface command is received{ EP0BUF[0] = AlternateSetting; EP0BCH = 0; EP0BCL = 1; return(TRUE); // Handled by user code}BOOL DR_GetStatus(void){ if(SETUPDAT[0]==0x40) { Running = 1; return FALSE; }; return(TRUE);}BOOL DR_ClearFeature(void){ return(TRUE);}BOOL DR_SetFeature(void){ return(TRUE);}BOOL DR_VendorCmnd(void){ if(SETUPDAT[1] == 0x90) // READ EEPROM { BYTE addr = (SETUPDAT[4]<<1) & 0x7F; EP0BUF[0] = PROM[addr]; EP0BUF[1] = PROM[addr+1]; } else { EP0BUF[0] = 0x36; EP0BUF[1] = 0x83; } EP0BCH = 0; EP0BCL = 2; // Arm endpoint with # bytes to transfer EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request return(FALSE); // no error; command handled OK}//-----------------------------------------------------------------------------// USB Interrupt Handlers// The following functions are called by the USB interrupt jump table.//-----------------------------------------------------------------------------// Setup Data Available Interrupt Handlervoid ISR_Sudav(void) interrupt 0{ GotSUD = TRUE; // Set flag EZUSB_IRQ_CLEAR(); USBIRQ = bmSUDAV; // Clear SUDAV IRQ}// Setup Token Interrupt Handlervoid ISR_Sutok(void) interrupt 0{ EZUSB_IRQ_CLEAR(); USBIRQ = bmSUTOK; // Clear SUTOK IRQ}void ISR_Sof(void) interrupt 0{ EZUSB_IRQ_CLEAR(); USBIRQ = bmSOF; // Clear SOF IRQ}void ISR_Ures(void) interrupt 0{ 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{ Sleep = TRUE; EZUSB_IRQ_CLEAR(); USBIRQ = bmSUSP;}void ISR_Highspeed(void) interrupt 0{ if (EZUSB_HIGHSPEED()) { pConfigDscr = pHighSpeedConfigDscr; pOtherConfigDscr = pFullSpeedConfigDscr; } else { pConfigDscr = pFullSpeedConfigDscr; pOtherConfigDscr = pHighSpeedConfigDscr; } EZUSB_IRQ_CLEAR(); USBIRQ = bmHSGRANT;}void ISR_Ep0ack(void) interrupt 0{}void ISR_Stub(void) interrupt 0{}void ISR_Ep0in(void) interrupt 0{}void ISR_Ep0out(void) interrupt 0{}void ISR_Ep1in(void) interrupt 0{}void ISR_Ep1out(void) interrupt 0{}void ISR_Ep2inout(void) interrupt 0{}void ISR_Ep4inout(void) interrupt 0{}void ISR_Ep6inout(void) interrupt 0{}void ISR_Ep8inout(void) interrupt 0{}void ISR_Ibn(void) interrupt 0{}void ISR_Ep0pingnak(void) interrupt 0{}void ISR_Ep1pingnak(void) interrupt 0{}void ISR_Ep2pingnak(void) interrupt 0{}void ISR_Ep4pingnak(void) interrupt 0{}void ISR_Ep6pingnak(void) interrupt 0{}void ISR_Ep8pingnak(void) interrupt 0{}void ISR_Errorlimit(void) interrupt 0{}void ISR_Ep2piderror(void) interrupt 0{}void ISR_Ep4piderror(void) interrupt 0{}void ISR_Ep6piderror(void) interrupt 0{}void ISR_Ep8piderror(void) interrupt 0{}void ISR_Ep2pflag(void) interrupt 0{}void ISR_Ep4pflag(void) interrupt 0{}void ISR_Ep6pflag(void) interrupt 0{}void ISR_Ep8pflag(void) interrupt 0{}void ISR_Ep2eflag(void) interrupt 0{}void ISR_Ep4eflag(void) interrupt 0{}void ISR_Ep6eflag(void) interrupt 0{}void ISR_Ep8eflag(void) interrupt 0{}void ISR_Ep2fflag(void) interrupt 0{}void ISR_Ep4fflag(void) interrupt 0{}void ISR_Ep6fflag(void) interrupt 0{}void ISR_Ep8fflag(void) interrupt 0{}void ISR_GpifComplete(void) interrupt 0{}void ISR_GpifWaveform(void) interrupt 0{}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -