Вы писали
Цитата(aaarrr @ Mar 25 2010, 15:11)
3. Ждем установки TXCOMP, ставим TXPKTRDY, снимаем TXCOMP, переходим к п.2
CODE
if(bank == 0)
{
if(!(regUDP->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXPKTRDY))
{
//запись в FIFO 5 байт
kA--;
}
if(kA==0)
{
bank = 1;
regUDP->UDP_CSR[AT91C_EP_IN] |= AT91C_UDP_TXPKTRDY;
kA=12;
}
}//if(bank == 0)
else //if(bank = 1)
{
//if(chTXC == 0) //bank 1 åùå íå çàïîëíåí
//запись в FIFO 5 байт
kA--;
if(kA==0)
{
//chTXC = 1;
while(!(regUDP->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP));
regUDP->UDP_CSR[AT91C_EP_IN] |= AT91C_UDP_TXPKTRDY;
regUDP->UDP_CSR[AT91C_EP_IN] &= ~(AT91C_UDP_TXCOMP);
kA = 12;
}
}//else if(bank = 1)
В соответствии с тем, что вы писали и что в документации, после записи во второй банк ожидаю TXCOMP, устанавливаю TXPKTRDY и сбрасываю TXCOMP
Код
while(!(regUDP->UDP_CSR[AT91C_EP_IN] & AT91C_UDP_TXCOMP));
regUDP->UDP_CSR[AT91C_EP_IN] |= AT91C_UDP_TXPKTRDY;
regUDP->UDP_CSR[AT91C_EP_IN] &= ~(AT91C_UDP_TXCOMP);