Перейти к содержанию

Как в МК AVR реализовать USB-интерфейс на Ассемблере?


Prozac

Рекомендуемые сообщения

   Всем доброго времени суток! У меня такой вопрос: вот если имеется самая обычная AVR-ка - например, Mega8 или даже Tiny2313 - в контексте данного вопроса, в принципе, не столь уж и важно, какой конкретной модели этот чип - главное же здесь то, что у этой самой AVR-ки (как и у большинства недорогих AVR-ов) отсутствует встроенный аппаратный USB-модуль. Так вот, хотелось бы узнать, как прикрутить такой МК к USB-порту компа; при этом НЕ используя для создания прошивки каких-либо языков высокого уровня с их готовыми библиотеками - т.е. в МК работа с USB должна быть реализована на чистом AVR-assembler, методом "ногодрыга". Сразу предвидя вопросы типа "А тебе это зачем?", отвечу: "Так надо!!! ;)))"; во многом просто потому, что хочется детально разобраться с работой USB-интерфейса на уровне сигналов (в будущих самоделках - пригодится!). Таким образом, меня интересуют следующие аспекты:

   1. Во-первых, что такое USB-интерфейс на уровне сигналов - т.е. как "дрыгать ногами" МК, чтобы это "дрыганье" соответствовало стандарту USB, и адекватно воспринималось бы ПК. Также, неплохо глянуть где-то на временнУю диаграмму сигналов для стандарта USB - наподобие той, какая частенько встречается в описаниях интерфейсов I2C или RS232.
   2. Во-вторых, разобравшись с тем, как "дрыгать ножками", необходимо узнать, какие команды отправлять в ПК при помощи этого "дрыганья", чтобы он (а точнее, Виндуха) опознал мой AVR как USB-девайс; а затем принял от него какие-то произвольные данные. Т.е., интересует описание собственно интерфейса - что передавать для того, чтобы начать передачу; сколько байтов должно быть в посылке и, какая у нее структура вообще; как передать компу сигнатуру с именем и номером устройства; как передать данные произвольного содержания; как окончить передачу и т.п. Ну и, соответственно, надо разобраться, как передавать данные в противоположном направлении - из компа в МК.
   3. В-третьих, после того, как МК будет "раскурен", хотелось бы выяснить, как увидеть эту МК-самоделку со стороны персоналки - т.е. нужно сделать на Delphi (или на Lazarus, что, в принципе, тождественно) какую-то прогу типа ГиперТермнала; но в отличие Терминала она, понятное дело, должна отправлять/принимать данные не через RS232, а через USB-порт - моему самопалу. Конкретно интересует, как открыть USB-шину в Delphi, как увидеть повешенные на ней устройства, выбрать среди них мое и установить с ним связь. Вот здесь, наоборот, чем меньше кодовой писанины, тем лучше - желательно использовать какую-нибудь готовую библиотеку или VCL-ку - чтобы все было попроще, без возни с WinAPI, и уж тем более, с ассемблером для IBM-PC.
  
   Понятно, что в рамках форума полностью раскрыть такую сложную тему, как USB, навряд ли удастся; но подскажите хотя бы, где об этом можно почитать что-либо толковое и мало-мальски подробное (большинство статей, что мне удалось "нагуглить" - это текст на два-три листа формата А4, с содержанием типа "USB+AVR - это очень круто"; или, в лучшем случае, "Берем библиотеку для GCC..." - а мне, как уже говорилось, хочется во всем разобраться на аппаратном уровне (библиотеку же тоже кто-то написал!), и сделать прошивку на AVR-assemler...).
   Единственное, что удалось вытрясти из Гугла - так это то, что любые МК лучше всего подключать к USB "Большого Брата" в режиме HID (Human Interface Device), т.к. это (насколько я понял) единственный режим, в котором Винда определяет подключаемый девайс по передаваемой им сигнатуре (ID, Name и т.п.), и не требует установки каких-либо драйверов. Думаю, что копать нужно именно в этом направлении...
   О существовании переходника на FT232R (двунаправленный конвертор USB <-> UART) я знаю, но в данный момент меня интересует именно прямая - через линии порта - связь "Большого Брата" с МК, безо всяких дополнительных навесок (к тому же, такой переходник - изделие не из самых дешевых - его стоимость гораздо дороже большинства простых AVR-ок типа той же Mega8).
   И еще один нюанс: очень не хотелось бы выносить мозг чем-то, написанным не по-нашенски; т.к. я однозначно не гуманитарий, и к инязам никакой склонности со школы не имею (по причине того, что там все на зубрежке, зубрить я терпеть не мог с детства - такой уж у меня характер...); а как переводят технические тексты программы-переводчики - это Вы, наверное, и сами знаете. Никогда не поверю, что в огромной стране (на родине Капицы и Алферова!) никто ничего не писал на родном языке про такую распространенную вещь, как интерфейс USB! Полезна будет любая инфа - книги, статьи из сети или радиолюбительских/компьютерных журналов, исходники на AVR-assembler; на край, подойдет даже вузовская лит-ра или чьи-то курсовые (хотя, по-правде, там часто бывает приличное такое количество тумана, который суть есть - вода).
   Подскажите, пожалуйста, с прочтения чего начать "раскуривание" темы USB+AVR+ASM (и где это посмотреть и скачать)? И если здесь я чего-то изложил не так, прошу не ругать очень сильно - как говорили в одном старом советском кино: "Я не волшебник, я только учусь" =))) Заранее благодарен за любую помощь!

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

С таким подходом не осилите.

Можно начать "снизу" - читаете документацию на USB (usb.org для начала, можно попробовать Агурова "Интерфейс USB. Практика использования и программирования")

А можно "сверху" - берете тот же vusb и смотрите как оно работает.

Но лучше эти подходы объединить.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Для начала читаем книги по основам USB:
Юрген Хельцебеш "USB в электронике" перевод с немецкого, СПб.: БХВ-Петербург, 2009 г. (в комплекте CD-ROM);
Александр Русев "Устройство USB и FireWire".

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

   Агурова скачал, посмотрел - книжка неплохая, но тема аппаратного уровня (то бишь, чисто физических сигналов - того самого "ногодрыга") там раскрыта кратенько и недостаточно для создания Ассемблерной "прошивки" - там не описано, например, как передавать все эти команды и сигнатуры (VID и т.п.) в виде ноликов и единичек на контакты порта, не приведено ни одной временнОй диаграммы сигналов - автор делает основной уклон в сторону готовых м.сх. USB-интерфейса и втроенных в МК USB-модулей. Хотя, на "верхем" уровне (со стороны компа) тема раскрыта неплохо.

   Хульцебеш у меня есть уже давно, там тема аппаратного уровня не раскрыта вовсе: герой книги - все тот же адаптер на FT232R, все исходники - строго для "верхов" (для PC), про Atmel (да и вообще, про МК) там практически ничего нет, и вдобавок автор, почему-то, испытывает какую-то особую тягу к невменяемому VB (простите, любители этого языка, если кого-то обидел!).

   Русева сейчас скачаю и посмотрю.

   А Igorplug USB - это сайт или книга, или что-либо еще? Ну, сейчас забью в Гугле, гляну.

   Одним словом, спасибо, что помогаете мне. Есть еще какие-нибудь варианты?

   Может быть, кто-то уже сделал какой-нибудь проект на AVR-assembler, и приконектил МК к USB? Не будете ли Вы так любезны отщипнуть мне кусочек сорца - не весе, а только то место, где "ногодрыг" и, возможно, еще процедуры интерфейса.

Ссылка на комментарий
Поделиться на другие сайты

Вот, нагуглил неплохой сайтик с книжками по разным вопросам программирования (не только AVR и МК, там вообще про все!) - может быть, пригодится не только мне: http://ihtik.lib.ru !

Ссылка на комментарий
Поделиться на другие сайты

2 часа назад, Prozac сказал:

   Агурова скачал, посмотрел - книжка неплохая, но тема аппаратного уровня (то бишь, чисто физических сигналов - того самого "ногодрыга") там раскрыта кратенько и недостаточно для создания Ассемблерной "прошивки" - там не описано, например, как передавать все эти команды и сигнатуры (VID и т.п.) в виде ноликов и единичек на контакты порта

Вообще-то, описано. И метод кодирования NRZI и структура пакетов. Достаточно или нет для написания устройства не знаю - разрабатывать софтовое usb-устройство на avr сейчас бесполезно.

Ругался на отсутствие форматирования исходного кода (включая отсутствие осмысленных комментариев и наличие неубранного после конфигуратора мусора) не менее 15 раз.

Часть моих наработок.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...