Klim
Поправляю. (И вообще, пора FAQ писать)
USB - несимметричный интерфейс. В нем есть хост и есть клиенты.
Все пакеты по шине посылает хост. (Если требуется получить от клиента какие-то данные, хост посылает пакет IN, а клиент отдает данные в ответ).
Все, что здесь обсуждалось - касается клиентов. Сделать USB-хост - несравнимо более сложная задача. Контроллеры USB-хоста - штука редкая и нетривиальная (обычно, они встраиваются либо в процессор, либо в южный мост). Программировать их - та еще задача (обычно пишется расписание пакетов, какие пакеты посылаются в какой кадр, на секунду вперед).
Если же речь шла о том, чтобы просто взять переходник USB->LPT, здесь тоже не все так гладко. Драйвер такого переходника представляется принтером, а не портом. Как правило, весь софт, работающий с самопальным железом, работает с портами.
Упрощая ситуацию - это совсем разные устройства, и сделать, чтобы все работало с таким переходником, не проще, чем наладить работу с собственным устройством. (и, в случае с собственным устройством: 1) не нужен переходник; 2) точно не возникнет проблем, из-за того, что криворукие китайцы что-то в этом переходнике напортачили)
С последовательным портом все сильно проще. Последовательной порт напрямую от последовательного порта через USB ничем не отличается и, в этой ситуации, переходником можно пользоваться свободно. Минус - в том, что для большинства устройств все равно потребуется контроллер.
Для самодельных устройств - лучше пользоваться не готовым переходником, к которому все равно нужна микросхема согласования уровня (MAX232 или аналогичная), а чем-то типа CP2102 (к которой нужно всего два конденсатора, уровни уже согласованы и стоит меньше $5 в розницу).
В любом случе, если пользоваться любыми готовыми фишками, невозможно реализовать массу интересных вещей, которые позволяет USB. Так, например, если используется полностью своя реализация, можно кнопки на устройстве заставить притвориться обычными кнопками клавиатуры или мыши.
У меня сейчас валяется конструктор на LPC2148 - к нему был забавный пример - крутишь ручку переменника - а по экрану курсор мыши ползет.
Добавлено спустя 2 минуты 8 секунд:
listener сказал:
AVR32 - не существует в природе. AVR - все 8-ми битные. Есть ARM7 и ARM9.
Мда. Фигню спорол. AVR32 уже успели анонсировать.
Правда, чем он лучше ARM7 для мелких устройств - по прежнему неясно.