Наконец-то закончились праздники, и пришло время чего-нибудь сделать.
Начнем, пожалуй, с необходимого устройства, облегчающего жизнь рядового электронщика – устройства связи с компьютером. Это нужно для того, чтобы передать данные в компьютер (температура с датчиков, положение дверей, частота вращения двигателя, таблица значений с регистратора …) или принять данные из компьютера (таблицы значений для вычислений, настоечные данные для устройств, новая прошивка для загрузчика…). Для отладки нового устройства (посмотреть что там, в мозгах микроконтроллера, происходит) вообще незаменимая вещь.
Как Вы знаете, существует множество интерфейсов, посредством которых микроконтроллер может общаться с внешним миром. Но если речь идет о связи с компьютером – вне конкуренции интерфейс RS-232 (COM порт). Причина — простота работы с портом со стороны компьютера и наличие большого количества программ для этого предназначенных. Кроме того, почти в каждом микроконтроллере есть аппаратно поддерживаемый интерфейс USART (это тот-же RS-232, только с напряжениями 0 — 5v), что делает процесс связи легко реализуемым.
Для того, чтобы привести уровни сигнала микроконтроллерного USART к уровням COM порта компьютера нужно собрать несложный преобразователь (например, на МАХ232), но можно пойти по более интересному пути
Более интересный путь — собрать преобразователь UART to USB. При этом USB порт воспринимается компьютером как виртуальный COM порт. В этом случае мы убиваем сразу несколько зайцев:
– USB порт есть в любом компьютере (хотя COM порт встречается еще довольно часто, но на ноутбуках его уже нет);
– как оказалось преобразователь UART to COM(RS-232) сделать гораздо сложнее, чем UART to USB (два раза делал программатор для СОМ порта с преобразователем МАХ232 – оба раза неудачно);
– если подключать преобразователь через USB хаб, то мы получаем сразу несколько виртуальных COM портов на одном USB, плюс безопасность для компьютера, так как хаб выступает в роли буфера.
Вот схема преобразователя UART to USB.
Это не мое устройство. Взята данная схема с сайта www.recursion.jp/avrcdc/ . Причина, по которой я ее здесь привожу – это простота схемы и дешевизна изготовления. Собрать схему довольно просто (можно даже на макете).
Готовое устройство я выполнил в форме «флешки» для того, чтобы удобней было пользоваться в «полевых» условиях. Для большего комфорта можно взять USB удлинитель, одним разъемом прицепить к компьютеру, во второй вставить нашу «флешку-преобразователь» и получим мобильное устройство, которое можно без проблем подключить к любой схеме.
Печатная плата двухсторонняя, подходит для микроконтроллеров ATmega8/48/88/168
040-M48-UARTtoUSB.zip (7188 Загрузок)
Вот вариант для изготовления по технологии описанной в посте №32.
040-M48-UARTtoUSB-2L.zip (7413 Загрузок)
Прошивки для различных микроконтроллеров:
040-cdcmega.zip (9308 Загрузок)
Фьюзы для ATmega8
Фьюзы для ATmega48/88/168
Фьюзы для CodeVisionAVR, PonyProg ставятся инверсно
SPI интерфейс для программатора выведен вместе со всеми интерфейсами сзади «флешки» – подключаем программатор прямо там. Штырек сброса паяем возле ножки сброса (чтоб не мешал). При программировании преобразователь нужно запитать напряжением 5v со стороны интерфейсов. Через USB нежелательно, так как напряжение питания через светодиод уменьшится. Если возникают проблемы по причине больших шумов – вешаем подтягивающий к питанию резистор на ножку сброса (5-10кОм). Наличие светодиода обязательно – он используется в качестве регулятора напряжения. Прошивка предусматривает работу управляющих линий (CTS, RTS, DTR), но для UART они не нужны и я их не выводил на разъем интерфейсов. Если они Вам нужны — просто нужно «кинуть» перемычки с ножек микроконтроллера на ножки разъема интерфейсов.
После того как устройство собрано,
необходимо установить драйвер виртуального COM порта.
040-avrcdc_inf.zip (22962 Загрузки)
В архиве есть папки для разных Win:
/raw — для (Windows 2000/XP)
/w2k — для Windows 2000 (bulk mode only)
/xpvista7 — для Windows XP/Vista/7 x32
/vista64 — для Windows Vista x64
Делается это очень просто:
1 Вставляем «флешку-преобразователь» в USB порт;
2 Получаем в трее сообщение о том, что найдено новое устройство;
3 Запустится «Мастер нового оборудования», выбираем «Установка из указанного места», жмем «Далее»;
4 Выбираем «Включить следующее место для поиска» и в окошке указываем нужный путь к драйверу;
5 Жмем «Далее», драйвер установится, жмем «Готово»
Теперь в «Свойствах» «моего компьютера» в закладке «Оборудование» нажимаем кнопку «Диспетчер устройств». В окошке диспетчера устройств в разделе «Порты (COM и LPT)» увидим новое устройство — «Virtual Communications Port (COM5)».
Для каждого USB порта будет назначен свой виртуальный COM порт (COM5, COM6, COM7 и т.д.).
Готово! Теперь можно пользоваться преобразователем.
Проверим работоспособность преобразователя, для этого нужно закоротить вход с выходом (RxD, TxD) и посылать с компьютера сообщения по виртуальному порту. Посланные сообщения должны возвращаться как принятые.
На нужные штырьки цепляем «джампер»-перемычку. Запускаем программу для работы с COM портом. Можно использовать стандартный виндовский гипертерминал, но мне больше нравиться другая программка — маленькая, портативная и функциональная.
Terminal.zip (20422 Загрузки)
Запускаем программу, устанавливаем нужный порт (смотрим номер порта в диспетчере устройств), скорость и другие параметры оставляем как есть, нажимаем «Connect», в окошке возле кнопки «->Send», пишем сообщение, нажимаем «->Send» и сморим результат. Нижнее окно — отправленное сообщение, большое окно — принятое сообщения. Если все работает — сообщения будут одинаковыми.
Данная «флешка — преобразователь интерфейсов» позже превратится в I2C toUSB, SPI to USB, SPI to UART и т.д. необходимо лишь перепрошивать ее необходимой прошивкой. (Что-то я у себя начинаю замечать тягу к универсализации :)).
P.S. Сайт-источник рекомендует для согласования уровней напряжения преобразователя(3.3v) и устройства(5v) соединять их через схему согласования. Но я думаю резисторов в пределах полукилоома в линиях RxD, TxD должно хватить для согласования — нужно попробовать.
P.P.S. Это первая практическая схема в блоге – дальше их будет больше, так как с основами мы, вроде-бы, разобрались (еще остались кой-какие вопросы – потихоньку буду писать).
И тут я по пристаю 😉
А у вас нет ли варианта сего CDC-232 но без уарта? Просто чтоб из программы слать в усб…
Ну или хотя бы подскажите пожалуйста, как из программы слать в усб (в ком)…
AVR получиться программировать?
AVR получиться програмьировать?
Ура!Заработало!Спазибо за схему афтору.
А вместо кондёров я использовал советские подстроечники))
SS — это не сброс. Это линия — «выбор ведомого» (англ. Slave Select) в SPI интерфейсе.
c1 и c2 можно поменять на 22пф
Пики программировать не получится.
можно им программировать пики этим уартом ?или что надо может доработать
Можно заменить конденсаторы c1,c2 на 22пф
Вывод SS это reset?
Больше бы сделал выводов. Попробуй на макетке, потом сам решишь, как тебе удобней.
Делал все на макетке.
Почему у меня не определяется устройство?
Только светодиод очень часто моргает.(
сейчас я-бы сделал ее совсем по другому…
Поделитесь если можно как бы сейчас решили?
Не хочется лишнее делать
Но хочется универсальности
На этой платке можно сделать как минимум три преобразователя отсюда http://www.recursion.jp/avrcdc/
Плюс программатор http://learn.adafruit.com/usbtinyisp
С другой стороны, плата делалась давненько и сейчас я-бы сделал ее совсем по другому… так что решайте.
Не догоняю универсальность этого устройства .если есть лучше надо выложить или этот проект до качать!!!!
не понимаю- этот проект делать или другой ,что посоветуете
При программировании isp- ss -это reset правильно понял?
И ещё стоит сказать, что фьюзы в ручную придется ставить, без использования дополнительной прошивки фьюзов
По идее можно, т.к. в Makefile’е есть закомментированный пункт CLK = 16000000UL. Только придется прошивку заново компилировать, изменив перед этим в ресурсном и заголовочном файлах проекта (oddebug.h и usbdrvasm.S) значения с 12000000 на 16000000. В своем проекте я поставил 20 MHz.
А на 16 МгЦ можно сделать?
Ато у меня в городе нет на 12. (
Спасибо!))) Не заметил ссылки в статье на исходный код http://www.recursion.jp/avrcdc/ там есть не только схема, но Source Code в разделе Download CDC-232
В самом низу страницы (той что по ссылке) даны все необходимые ссылки.
»
Documentation Resources
Download the V-USB package containing a short description and several simple code examples.
V-USB’s git repository is on github.com.
V-USB Wiki is a public Wiki with lots of additional information.
There is also an excellent step by step tutorial by Code and Life.
Another third party tutorial can be found at workinprogress.ca.
«
@GetChiper
А можно по конкретней ссылочку дать?.. Копаться не лень, но ничего не понятно!
Вот здесь http://www.obdev.at/products/vusb/index.html есть исходники и документация по созданию программного моста USB-UART с возможностью использования своего имени для определяемого устройства.
Доброго времени суток! Я очень благодарен админу за эту статью, она невероятно полезна для меня! Я работаю с Atmega88, и в архиве есть прошивка для этого мк! Собрираю устройство не для своего пользования, и в связи с этим возможно ли поменять с помощью какого либо ПО название наденного com-порта на ПК? На скрине «USB-232», а мне необходимо название моего устройства.
Подскажите а есть ли продолжение этой темы UARTto USB?
Хотел бы собрать универсальное устройство для программирования ATxmega32A4 и STM32F100C. Или посоветуйте что собрать для программирования этих МК.
в USB 3 девять выводов!! афигеть
Ок)) мне всеж не нравится что приходится отключать проверку подавленности((, но придется так и сделать ;(
Проблемы с драйверами — это для 7 х64 обычная проблема.
Где то в комментах уже это обсуждалось. Вроде как и решали эту проблему. Просмотри комменты.
виноват в USB3 больше ампераж, а не вольтаж. на стандарте USB2 работает, специально попробовал, а на USB3 почему то нет((
и USB3 стандарта тоже нет на ноуте
@GetChiper Прикол заключается скорей всего в том что:
1) у меня на материнке USB2 и USB3
2) у меня win7 x64
3) на старом ноуте все работает.
Там обычный WinXp sp2, и нет USB2, нормально запустился. я думаю виноваты новые стандарты usb. надо будет напряжения померить на USB2,USB3, веть говорят что на юсб3 напряжение завышено
Возможно гдето ошибка на плате и замыкание Rx и TX вырубает девайс.
Салют всем, собрал я девайс. столкнулся с фегней, при подключении к юсб все определяется норм при закачивание Rx и TX система оповещает звуковым сигналом что типа устройство отключилось, и терминал показывает что ком порт отключен. и еще я не ставил светодиод, на линии D+ и D- поставил стабилитроны на 3.3в может быть поставить на 3,6в??? за ранние спасибо. если можете то напишите в ВК https://vk.com/pino24 , эта мая страница или на почту pino24@yandex.ru
спасибо, буду разбираться… походу мертв мой мк((( reset и spien не выключал, но все равно больше не отзывается.
Нет ресет не отключается — МК можно будет прошивать и дальше.
Вот фьюз байты:
Low F6
High CE
Ext F9
насколько я понял reset отключаем? т.е. микроконтроллер шьется один раз?
Подскажите пожалуйста фьюзы для AVRDUDE а то запутался совсем.
А в чем Вы устанавливали фьюзы? Возможно Вы их выставили инверсно.
А фьюзы указаные для микроконтроллера Atmega88 правильные ?
Я такие прошил и микрик отвалился (больше не откликается) и вероятно это связано с RSTDISABLE
Боюсь USB очень чувствителен к частоте и такой фокус не пройдет.
У меня такой вопрос, а если заменить кварц 12МГц на 14,7456 МГц повлияет ли это на стабильность работы USB? И будет ли схема вообще работать?
Должно.
а если собрать на атини2313 и задействовать rxd txd каторые нужны только для к-линии,ти будет он работать .
Теоретически должен, но лучше для таких целей заюзать аппаратный преобразователь.
добрый день!
имею адаптер кл-линии для диагностики авто в нём задействованы RTS.DTR.TXD.RXD, ти будет он работать с этим преобразователем.
Собрал, прошил — заработало сразу как uart.
Хотел попробовать как программатор, но не нашёл страничку с прошивкой и описанием.
На скорости 57600 не успевает обрабатывать. Так, что 38400 — это наверно действительно потолок или есть задержка? Пробовал через бут заливать прошивку и через этот переходник не получилось, а cp2102 справляется. Это как то можно исправить или нет?
Для I2C лучше использовать аппаратный преобразователь — быстрей умеет работать.
У меня такой вопрос, может пробовали.
Не обходим адаптер I2C шины, к примеру вот такой: http://www.texnotron.com/uploads/postsnew/2010-10-19/44-72.jpg
Для формирования необходимо 4 сигнала DSR, RTS, CTS, и DTR.
У вас есть CTS, RTS, и DTR. Нету DSR.
Вообще такой вариант ни кто не прорабатывал?
Я на Win7-64 поставил утилиту,которая при каждом включении компа отключает проверку подписи драйверов.Зато теперь и USBasp проггер заработал.
Спасибо за ответ, на буке настроил, на компе почему то не идет, но там надо винду переставлять, накосячил в свое время с ней. Теперь другая проблема. Собрал я 12-канальный генератор эффектов, при включение через данный преобразователь соединения нет(делал со светодиодом), переделал по быстрому на стабилитроны и на рабочем буке все запустилось. Приношу домой, пробую запустить на 7 и… щищ с маслом, говорит, что подключено неизвестное устройство. Ни в какую определять не хочет.
При загрузке копмпьютера нажмите F8 там найдёте надпись :отключить обязательную проверку подписи: