нашел реализацию для EP1 по прерыванию (похоже копирует из буфера in в out)
Код
void ISR_Ep1in(void) interrupt 0
{
EP1OUTBC = 64;
EZUSB_IRQ_CLEAR();
EPIRQ = bmBIT2;
}
void ISR_Ep1out(void) interrupt 0
{
BYTE count;
BYTE i;
count = EP1OUTBC;
if(!(EP1INCS & bmBIT1))
{
for (i=0;i<count; i++)
{
EP1INBUF[i]=EP1OUTBUF[i];
}
EP1INBC =count;
}
EZUSB_IRQ_CLEAR();
EPIRQ = bmBIT3;
}
{
EP1OUTBC = 64;
EZUSB_IRQ_CLEAR();
EPIRQ = bmBIT2;
}
void ISR_Ep1out(void) interrupt 0
{
BYTE count;
BYTE i;
count = EP1OUTBC;
if(!(EP1INCS & bmBIT1))
{
for (i=0;i<count; i++)
{
EP1INBUF[i]=EP1OUTBUF[i];
}
EP1INBC =count;
}
EZUSB_IRQ_CLEAR();
EPIRQ = bmBIT3;
}
по сути, когда появляется interupt EP1in, он снимается, устанавливается Interupt на EP1out, где копируется блок в буфер, и устанавливается interupt на EP1out. (не напутал ли я что ?)
подойдет ли это для работы с EP0 ? или еще надо какие либо регистры устанавливать\читать?
Спасибо.