Кстати, весьма здравая мысль.
Вот так?
Код
/* Clear interrupts on EP 0 */
ulTemp = AT91C_BASE_UDP->UDP_CSR[ usbEND_POINT_0 ];
usbCSR_CLEAR_BIT( &ulTemp, usbINT_CLEAR_MASK );
AT91C_BASE_UDP->UDP_CSR[ usbEND_POINT_0 ] = ulTemp;
// Danger! But:
// WARNING: Due to synchronization between MCK and UDPCK, the software application must wait for the end of the write
// operation before executing another write by polling the bits which must be set/cleared.
while(AT91C_BASE_UDP->UDP_CSR[ usbEND_POINT_0 ] != ulTemp);
Смущает меня такой while в ISR...
Да и вот такой for мне тоже не нравится....
Код
for(i=0;(i<0x10) && (AT91C_BASE_UDP->UDP_CSR[ usbEND_POINT_0 ] != ulTemp);i++);
Сообщение отредактировал Kitsok - Dec 13 2006, 10:38