Код
__ramfunc static uint AT91F_UDP_Write(AT91PS_CDC pCdc, u8 *pData, uint txlength)// Send through endpoint 2
{
AT91PS_UDP pUDP = pCdc->pUdp;
uint cpt = 0;
//Если FIFO свободна, то производим запись, нет
if(!(pUDP->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY))
{
pUDP->UDP_CSR[AT91C_EP_IN] &= ~(AT91C_UDP_TXCOMP);
cpt = txlength;
while (cpt--) pUDP->UDP_FDR[AT91C_EP_IN] = *pData++;
pUDP->UDP_CSR[AT91C_EP_IN] |= AT91C_UDP_TXPKTRDY;
}
return txlength;
}
{
AT91PS_UDP pUDP = pCdc->pUdp;
uint cpt = 0;
//Если FIFO свободна, то производим запись, нет
if(!(pUDP->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY))
{
pUDP->UDP_CSR[AT91C_EP_IN] &= ~(AT91C_UDP_TXCOMP);
cpt = txlength;
while (cpt--) pUDP->UDP_FDR[AT91C_EP_IN] = *pData++;
pUDP->UDP_CSR[AT91C_EP_IN] |= AT91C_UDP_TXPKTRDY;
}
return txlength;
}
действительно ли такая функйия будет пропускать пакеты, в случае занятого буфера? или есть варианты более скоростной передачи по усб?