📄 fx2_full.c.bak
字号:
break;
}
case VX_B7: // read Speed
{
EP0BUF[0] = VX_B7;
SYNCDELAY;
EP0BUF[1] = EZUSB_HIGHSPEED( );
SYNCDELAY;
EP0BUF[2] = enum_high_speed;
SYNCDELAY;
EP0BCH = 0;
EP0BCL = 3;
EP0CS |= bmHSNAK;
break;
}
case VX_B8: // read EP6 State
{
EP0BUF[0] = VX_B8;
SYNCDELAY;
EP0BUF[1] = EP6FIFOBCH;
SYNCDELAY;
EP0BUF[2] = EP6FIFOBCL;
SYNCDELAY;
EP0BUF[3] = EP6CS;
SYNCDELAY;
EP0BUF[4] = EP6FIFOFLGS;
SYNCDELAY;
EP0BUF[5] = EP6FIFOPFH;
SYNCDELAY;
EP0BUF[6] = EP6FIFOPFL;
SYNCDELAY;
EP0BCH = 0;
EP0BCL = 7;
EP0CS |= bmHSNAK;
break;
}
case VX_B9: // read EP2 State
{
EP0BUF[0] = VX_B9;
SYNCDELAY;
EP0BUF[1] = EP2FIFOBCH;
SYNCDELAY;
EP0BUF[2] = EP2FIFOBCL;
SYNCDELAY;
EP0BUF[3] = EP2CS;
SYNCDELAY;
EP0BUF[4] = EP2FIFOFLGS;
SYNCDELAY;
EP0BUF[5] = EP2FIFOPFH;
SYNCDELAY;
EP0BUF[6] = EP2FIFOPFL;
SYNCDELAY;
EP0BCH = 0;
EP0BCL = 7;
EP0CS |= bmHSNAK;
break;
}
case VX_BA:
{
{//IOC.2: LATCH, IOC.0: CLK, IOC.1: DATA, IOC.3: Reset
int i;
int d;
d = SETUPDAT[2];
d <<= 6;
IOC |= 0xFC;
for (i = 0; i < 8; i ++)
;
IOC &= 0xFB; //set LATCH low
for (i = 0; i < 10; i ++)
{
IOC &= 0xFE; //set CLK low
if (d & 0x8000) //set DATA
IOC |= 0x2;
else
IOC &= 0xFD;
IOC &= 0xFE; //set CLK low
IOC &= 0xFE; //set CLK low
IOC &= 0xFE; //set CLK low
IOC |= 0x1; //set CLK high
IOC |= 0x1; //set CLK high
IOC |= 0x1; //set CLK high
d <<= 1;
}
IOC |= 0xFC; //set LATCH high
}
EP0BUF[0] = VX_BA;
SYNCDELAY;
EP0BUF[1] = SETUPDAT[2];
SYNCDELAY;
EP0BCH = 0;
EP0BCL = 2;
EP0CS |= bmHSNAK;
break;
}
case VX_BB:
{
{//IOC.2: LATCH, IOC.0: CLK, IOC.1: DATA, IOC.4: Reset
int i;
int d;
d = 0x100 | SETUPDAT[2];
d <<= 6;
IOC |= 0xFC;
for (i = 0; i < 8; i ++)
;
IOC &= 0xFB; //set LATCH low
for (i = 0; i < 10; i ++)
{
IOC &= 0xFE; //set CLK low
if (d & 0x8000) //set DATA
IOC |= 0x2;
else
IOC &= 0xFD;
IOC &= 0xFE; //set CLK low
IOC &= 0xFE; //set CLK low
IOC &= 0xFE; //set CLK low
IOC |= 0x1; //set CLK high
IOC |= 0x1; //set CLK high
IOC |= 0x1; //set CLK high
d <<= 1;
}
IOC |= 0xFC; //set LATCH high
}
EP0BUF[0] = VX_BB;
SYNCDELAY;
EP0BUF[1] = SETUPDAT[2];
SYNCDELAY;
EP0BCH = 0;
EP0BCL = 2;
EP0CS |= bmHSNAK;
break;
}
//liuyunxiang
case VX_BE_CONF_START:
{
conf_start = TRUE;
xfer_times = (SETUPDAT[2] << 8) + SETUPDAT[3];
//xfer_times = 488;
times_xfered = 0;
EP2FIFOCFG &= 0xE7; //configure ep2fifo as manual mode
SYNCDELAY;
*EP0BUF = CONF_START_SUCCESS;
EP0BCH = 0;
EP0BCL = 1; // Arm endpoint with # bytes to transfer
EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request
break;
}
/*
{
OEC |= 0x0F; //Enable the PC0/PC1(PC0:CLK PC1:SDI)
OEA &= 0xFB; //Enable the PA2
// IOA &= 0x00; //
///Followed codes testing the RESET function
// IOC |= 0xF7; // Enable reset
// EZUSB_Delay(1);
// IOC |= 0x08; // Return reset to high
///The codes above testing the RESET function
///Followed codes testing the variable digital potentiometer
IOC &= 0xFB; //Enable CS(LOW, PC2) 0xFB=0x11111011
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI A1=0 (Enable channel 2)(0x1111 1100)
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC |= 0x02; //Set SDI A0=1 (Enable channel 2)
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D7=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC |= 0x02; //Set SDI D6=1
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D5=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D4=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D3=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D2=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D1=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D0=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC |= 0x04; //Return CS to High (to store the value in VR)
IOC |= 0x04; //Return CS to High (to store the value in VR)
IOC |= 0x04; //Return CS to High (to store the value in VR)
IOC |= 0x04; //Return CS to High (to store the value in VR)
IOC |= 0x04; //Return CS to High (to store the value in VR)
IOC |= 0x04; //Return CS to High (to store the value in VR)
IOC |= 0x04; //Return CS to High (to store the value in VR)
IOC |= 0x04; //Return CS to High (to store the value in VR)
IOC |= 0x04; //Return CS to High (to store the value in VR)
IOC &= 0xFB; //Enable CS(LOW, PC2) 0xFB=0x11111011
IOC &= 0xFB; //Enable CS(LOW, PC2) 0xFB=0x11111011
IOC &= 0xFB; //Enable CS(LOW, PC2) 0xFB=0x11111011
IOC &= 0xFB; //Enable CS(LOW, PC2) 0xFB=0x11111011
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI A1=0 (Enable channel 1)(0x1111 1100)
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI A0=0 (Enable channel 1)(0x1111 1100)
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D7=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D6=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D5=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D4=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D3=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC |= 0x02; //Set SDI D2=1
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC |= 0x02; //Set SDI D1=1
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC &= 0xFC; //Set SDI D0=0
IOC |= 0x01; //CLK
IOC |= 0x01;
IOC &= 0xFC; //Clean
IOC |= 0x04; //Return CS to High (to store the value in VR)
///Show the feedback info
EP0BUF[0] = VX_BA;
SYNCDELAY;
EP0BUF[1] = GPIFREADYSTAT;
SYNCDELAY;
EP0BCH = 0;
EP0BCL = 2;
EP0CS |= bmHSNAK;
break;
}
*/
default:
return(TRUE);
}
return(FALSE);
}
//-----------------------------------------------------------------------------
// USB Interrupt Handlers
// The following functions are called by the USB interrupt jump table.
//-----------------------------------------------------------------------------
// Setup Data Available Interrupt Handler
void ISR_Sudav(void) interrupt 0
{
GotSUD = TRUE; // Set flag
EZUSB_IRQ_CLEAR();
USBIRQ = bmSUDAV; // Clear SUDAV IRQ
}
// Setup Token Interrupt Handler
void 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
{
// whenever we get a USB reset, we should revert to full speed mode
pConfigDscr = pFullSpeedConfigDscr;
((CONFIGDSCR xdata *) pConfigDscr)->type = CONFIG_DSCR;
pOtherConfigDscr = pHighSpeedConfigDscr;
((CONFIGDSCR xdata *) pOtherConfigDscr)->type = OTHERSPEED_DSCR;
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;
((CONFIGDSCR xdata *) pConfigDscr)->type = CONFIG_DSCR;
pOtherConfigDscr = pFullSpeedConfigDscr;
((CONFIGDSCR xdata *) pOtherConfigDscr)->type = OTHERSPEED_DSCR;
}
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 + -