Цитата(nameless @ Jan 8 2007, 14:51)

А Вы уже видели, что "терминалка" из примера хочет именно столько же байт сколько отправила.
Не понял вопроса.
Цитата(nameless @ Jan 8 2007, 14:51)

про isconfigured уже сказали...
Про isconfigured в частночти я уже упомянул, что пример практически не правился.
Цитата(nameless @ Jan 8 2007, 14:51)

но у меня другая проблема - не знаю как сделать все это по прерываниям. Нет ли "максимально простого" примера.
Лично я о таком примере ничего не знаю.
Так или иначе, пример вроде заработал, но для этого пришлось почитать буржуйский форум на
www.at91.com.
Итак, буржуи пишут:
1. Для корректной работы на разных чипсетах с поддержкой USB, нужно поменять тип конечной точки с AT91C_UDP_EPTYPE_ISO_IN на AT91C_UDP_EPTYPE_INT_IN в двух местах в функции CDC_Enumerate().
Ссылка на сообщение.
2. Для корректной работы функций Read() и Write() в функции IsConfigured() в обработку события End_Of_Bus_Reset нужно добавить строку обнуления текущей конфигурации:
Код
pCdc->currentConfiguration=0
Ссылка на сообщение.
3. Для того, чтобы главный цикл не останавливался на функции Read, пока не прийдут данные от хоста, в функции Read я дописал условие:
Код
if ( pstUDP->UDP_CSR[ AT91C_EP_OUT ] & currentReceiveBank ) {
...
}
else
length = 0; // <-=
А теперь я также взялся переделывать обработку событий под прерывания.
Кстати, наткнулся на забавный момент: после обработки
прерывания по событию End_Of_Bus_Reset, регистр маски прерываний UDP_IMR сбрасывается в исходное состояние

Вероятно, это баг, но о нём господа из Atmel решили умолчать. Или выдать за фичу. Позднее

Цитата(nameless @ Jan 8 2007, 14:51)

Понять хотябы на какое именно событие вешать isconfigured и read......
А вот здесь-то как раз ничего сложного (IMHO): в функции isconfigured есть опрос регистра статуса по двум событиям - AT91C_UDP_ENDBUSRES и AT91C_UDP_EPINT0 - вот на них и надо настраивать прерывания. Что касается чтения и записи данных из/в FIFO, вероятно нужно разрешать и обрабатывать прерывания соответствующих EndPoint'ов.
Но это - уже другая тема для другой ветки сообщений. А данная тема, полагаю, закрыта.