Просто не заполнять буфер, но выполнить "validate packet" ? Т.е.,:
//Посылка NAK в ответ на IN - транзакцию
//Вход: EPNum: Endpoint Number <=> EPNum.0..3: Лог. точка, EPNum.7: Направление (IN <=> 1)
void USB_WriteEP (unsigned int EPNum, unsigned char *pData, unsigned int cnt)
{
USBCtrl = ((EPNum & 0x0F) << 2) | 0x00000002;
USBTxPLen = 0;
//Эти строки закомментированы, т.к. просто нет данных для передачи,
//и поэтому нужно ответить "NAK":
/*
for (n = 0; n < (cnt + 3) / 4; n++) {USBTxData = *((__packed unsigned int *)pData);
pData += 4;
}
*/
USBCtrl = 0;
//Эта строка закомментирована по той же причине:
/*
n=((((EPNum & 0x7f) << 1) + 1) << 16);
*/
WrCmd(0x00000500 | n);
WrCmd(0x00FA0500);
//И эта строка не нужна:
return (cnt);
}
Подскажите, пожалуйста, а то в документации это очень туманно описано ...