USBTiny - миниатюрный USB программатор AVR микроконтроллеров. Как подключить, написать программу и прошить микроконтроллер ATtiny2313 Attiny2313 программирование usb

AVR-CDC предназначена для конвертации RS232 и USB данных с применением AVR-микроконтроллеров, без использования какого-либо специализированного USB-чипа. Данная технология основывается на Object Deveopment"s V-USB (Software-USB на AVR), и CDC (Communication Device Class) протоколах. AVR-CDC позволяет компьютеру взаимодействовать с USB-устройствами через виртуальный COM-порт. В этом проекте я хочу привести несколько вариантов реализации виртуального COM-порта на AVR-микроконтроллерах.

CDC-232 создает виртуальный COM-порт на ПК, который не имеет физического порта RS- 232C. Он обеспечивает соединение RS-232C (без управляющих линий) после подключения устройства и установки драйвера.

Использование

Запишите программу в AVR, соберите схему и подсоедините устройство к USB порту ПК. Установите драйвер под ОС Windows. Подключитесь к устройству через появившийся виртуальный COM-порт с помощью программного обеспечения терминала или вашего приложения. Управляющие линии (DTR, DTS, RTS, CTS) не используются хост приложением. Запрограммируйте терминальное приложение как "no flow-control" (без управления потоками данных).

ОС Windows повторно запросит установку драйвера при подключении к другому USB порту. Далле произойдет автоматическое обнаружение ранее установленного драйвера. После этого будет назначен другой номер COM-порта. Если вы введете номер последовательного порта в AVR (обновите с измененным файлом usbconfig.h), тогда вы получите тот же самый COM-порт на любом USB порте. Однако нельзя подключить несколько CDC устройств к одному и тому же последовательному порту.

Перед отключением устройства закройте вручную COM-порт с помощью программного обеспечения терминала или вашего приложения. В противном случае вы не сможете подключиться к устройству снова из-за повреждения индекса файла. Далее перезапустите программное обеспечение терминала или ваше приложение. Переключитесь в режим быстрой передачи, используя файл "lowcdc.vbs". Это позволит получить скорость передачи данных выше, чем 9600 бит/сек.

Циклический тест для версии ATtiny45

Схемные решения

Данные схемы предназначены для ATtiny45/85, ATtiny2313/AT90S2313, и ATmega8/48/88/168. Их микропрограммное обеспечение можно загружать через ISP-разъем. Красный светодиод понижает USB напряжение с 5В до 3.3В, затем оно подается на AVR. Ток составляет около 10мА, и его недостаточно для управления другой схемой. При подключении к другому микроконтроллеру, подсоедините вывод Gnd, а также перекрестно TxD и RxD. R4 ограничивает утечку тока, когда напряжение питания микроконтроллера Vcc составляет 5В. Резистор можно не использовать, если Vcc совпадает. R5 защищает вывод TxD, если он будет закорочен на Gnd. Поэтому вы можете не использовать оба резистора R4 и R5, если подключитесь к RS- 232C драйверу через MAX232. Используйте кварцевый генератор. Хотя керамический резонатор отлично работает в большинстве случаев, он становится нестабильным, когда отклонение частоты увеличивается.

ATtiny45/85 использует внутренний RC-генератор и PLL. Он калибруется USB сигналом при подключении устройства. Универсальный асинхронный интерфейс UART реализован программным методом. Этого недостаточно для скоростной передачи данных. Если TxD и RxD инверсные (обновите с помощью опции DUART_INVERT), вы сможете напрямую подключаться к линии RS-232C. Скорость 1200 – 4800бит/сек, протокол 8N1.


Пример ATtiny45 при использовании мини-B коннектора

ATtiny2313/AT90S2313 имеет программную память величиной 2кБ. Хотя скорость передачи данных конфигурируется автоматически, некоторые функции не используются. Скорость 600 – 38400бит/сек, протокол 8N1.


CDC-232 для ATtiny2313-20

Внутренний Универсальный асинхронный интерфейс UART ATmega8/48/88 конфигурируется с помощью ПК. Поддерживается управление потоком данных (RTS/CTS).

Скорость 600 – 38400бит/сек, данные 7/8, контроль по четности N/E/O, стоп 1/2.


Подключение к RS-232C каналу требует инвертирования полярности и подбора уровня TxD и RxD. Используйте выделенную ИС, такую как MAX232. Вы сможете заменить ей эту простую схему.

Когда целевой микроконтроллер имеет другое напряжение питания Vcc, происходит утечка тока через сигнальные линии. Это приведет к искажению сигнала или управлению микроконтроллером без питания. Данная схема несовершенна, однако пригодна для большинства случаев.

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
CDC-232 для ATtiny45
U1 МК AVR 8-бит

ATtiny45

1 В блокнот
LED1 Светодиод Красный 1 В блокнот
R1 Резистор

1.5 кОм

1 В блокнот
R2, R3 Резистор

68 Ом

2 В блокнот
R4 Резистор

10 кОм

1 В блокнот
R5 Резистор

470 Ом

1 В блокнот
C1 Конденсатор 0.1 мкФ 1 В блокнот
CN1 USB-коннектор XM7B-0442 1 В блокнот
CDC-232 для ATtiny2313
U1 МК AVR 8-бит

ATtiny2313

1 В блокнот
LED1 Светодиод Красный 1 В блокнот
R1 Резистор

1.5 кОм

1 В блокнот
R2, R3 Резистор

68 Ом

2 В блокнот
R4 Резистор

10 кОм

1 В блокнот
R5 Резистор

470 Ом

1 В блокнот
C1, C2 Конденсатор 18 пФ 2 В блокнот
C3 Конденсатор 0.1 мкФ 1 В блокнот
X1 Кварцевый резонатор 12 Мгц 1 В блокнот
CN1 USB-коннектор XM7B-0442 1 В блокнот
CDC-232 для ATmega8/48/88
U1 МК AVR 8-бит

ATmega8

1 В блокнот
LED1 Светодиод Красный 1 В блокнот
R1 Резистор

1.5 кОм

1 В блокнот
R2, R3 Резистор

68 Ом

2 В блокнот
R4 Резистор

10 кОм

1 В блокнот
R5 Резистор

470 Ом

1 В блокнот
C1, C2 Конденсатор 18 пФ 2 В блокнот
C3 Конденсатор 0.1 мкФ 1 В блокнот
X1 Кварцевый резонатор 12 Мгц 1 В блокнот
CN1 USB-коннектор XM7B-0442 1 В блокнот
Подключение к RS-232C каналу
Q1 Биполярный транзистор

Рано или поздно перед разработчиком какого либо устройства на микроконтроллере появляется потребность в стыковке его с компьютером. Самое простое и очевидное решение — это заюзать COM или LPT порт компьютера. А как быть тем у кого нет COM и LPT ? Например владельцам ноутов? Решение есть! Встречайте этот чудесный девайс. Это преобразователь интерфейсов USB-UART.

Преобразователей подобного рода существует великое множество. Наибольшую популярность получили преобразователи FTDI. Они конечно хороши но у них есть три недостатка:

  • Стоимость . Например у нас FT232RL стоит 155 р. Довольно таки дорого
  • Корпус . Она жутко мелкая! Корпус SSOP-28 не для новичков.
  • Доступность. Достать её не так то просто. Во всяком случае у нас

Я предлагаю собрать аналогичный преобразователь на микроконтроллере Atmega8. Скажу сразу что схема и прошивка не моя. Я лишь разработал печатную плату и доработал схему. (добавил стабилитроны на 3.3 в). Итак схема:

Как видно, схема особой сложности не представляет. Хочу обратить внимание на то что нумерация указанная на схем подходит только для микроконтроллера в DIP корпусе. Я же использовал TQFP для экономии места. Получилось у меня примерно следующее:

Самодельный драйвер двигателей на транзисторах можно использовать не только для управления коллекторными моторчиками постоянного тока но и для управления шаговыми двигателями. Шаговые двигатели можно использовать для изготовления самодельных станков, роботов и прочих интересных вещей. Коллекторные двигатели тоже можно использовать для этих целей и асинхронные тоже но шаговые для таких применений обладают преимуществами: 1) точность, 2) отсутствие необходимости в обратной связи, 3) высокий момент и 4) низкие обороты. Начать освоение шаговых двигателей можно с каких нибудь дешёвых небольших например таких:

Рисунок 1 - Шаговый двигатель

У этого двигателя имеется 4 вывода 2 из них идут на одну обмотку остальные 2 на другую. Ротор двигателя будет вращаться если на определённые выводы в определённой последовательности подавать определённые напряжения. Есть несколько способов управления шаговым двигателем, один из них иллюстрируется на рисунке:

Рисунок 2 - Пример управления шаговым двигателем

Микроконтроллер может управлять драйвером так чтобы ротор подключённого к этому драйверу шагового двигателя вращался, для этого можно например хранить последовательности состояний выводов в массиве и перебирать их по очереди с необходимой периодичностью и в нужном направлении. А можно управляющую программу запускать на компьютере а микроконтроллер использовать для преобразования последовательного кода в набор состояний выводов микроконтроллера. LPT-порт параллельный и для управления шаговым двигателем в этом нет необходимости но так всё же можно поступить например для того чтобы не переделывать (сделанную ранее) схему для перепрограммирования микроконтроллера:

Рисунок 3 - ATtiny2313 и LPT-порт


Драйвер также не нужно переделывать:

Рисунок 4 - Драйвер двигателей


Прошивку для ATtiny2313 вместе с проектом для WinAVR можно скачать . Программу (вместе с inpout32.dll) для управления двигателем можно скачать , для этой программы как и для предыдущей необходим файл inpout32.dll который должен находится в той же папке что и программа. Эту программу можно использовать не только для управления шаговым двигателем. Вообще она подойдёт для управления как угодно драйвером на небольшой частоте. Посмотреть всё в действии можно на видео:

Обновлено 19.09.2015. Всем привет. В прошлой статье мы с Вами рассмотрели устойство для восстановления микроконтроллеров Atmega fusebit doctor (Шаг №7). Сегодня мы рассмотрим еще одно не менее важное а даже более полезное устройство UART-USB преобразователь на микроконтроллере ATtiny2313. Если Вы увлекаетесь электроникой и прикладным программированием, то данный девайс станет вашим верным инструментом для наладки проектируемого устройства и передачи данных на компьютер. Что такое интерфейс UART Вы можете ознакомится в статье № 40. А вот сам преобразователь нам необходим что бы мы смогли связать ПК и наше устройство, для наладки и передачи данных. Такая необходимость всегда возникает перед разработчиком, так что будьте готовы обзавестись ним. Конечно очень просто передать на COM порт (RS232) или LPT, но не у всех есть данный порт например ноутбуки.

Есть много преобразователей, например на схеме MAX232 (RS232-UART) и другие. Но мы с Вами рассмотрим преобразователь на микроконтроллере. Если Вы увлекаетесь электроникой и прикладным программированием, то данный девайс станет вашим верным инструментом. Ниже приведена схема преобразователя. Даная схема и драйвера были взяты из следующего ресурса http://www.recursion.jp/prose/avrcdc/ , где описываются различные варианты передачи данных на ПК, а также драйверы и открытые исходники предоставленные неким автором Osamu Tamura.

Слева UART - USB преобразователь. Как видим из схемы на ней линии передачи/приема данных TXD/RXD, резисторы R4 — ограничитель тока, R5 — защита TXD от короткого на землю, стабилитроны на схеме для защиты сигнальных линий, резистор R1 – питание на линии, С3 – сглаживает помехи, R2 R3 — токоограничители. Сам микроконтроллер ATtiny2313 в роли преобразователя. Скорость передачи конфигурируется автоматически и равняется от 600 — 38400bps, стандарт протокола 8N1. Сборка не представляет сложности все исходники, шаблоны платы, все в свободном доступе на данном ресурсе. Ниже представлены фото моей сборки этого девайса:

На схеме присутствует интерфейс для внутрисхемного программирования (5-ть штырьков внизу и 1 возле микроконтроллера).

Добавлю инфомацию, от себя для проверки на работоспособность некоторых деталей:
- стабилитрон, для его проверки на целостность анод на минус, — плюс через 10кОм на катод, подаем 5 В – должны получитьь заданное падение напряжения;
- проверяем генератор тактовой частоты – здесь необходимо в микроконтроллере выставит фьюз CKOUT,т.е. разрешить выводить меандр задающего генератора на ножу 6 (мк ATtiny2313 – PD2). Меряем частоту. Также можно измерить напряжение, которое должн быть = половине питания = 2,86В. (у меня было так). Помните мк работает от внешнего генератора, поэтому заливаете сначала программу, а потом меняете фьюзы на внешний генератор.

Дальнейший шаг наладки этого устройства – установить драйвер на компьютер — «Virtual Communications Port» для Win — качаем архив avrcdc_inf.zip. В даном архиве 4-ри папки: raw - для (Windows 2000/XP), w2k - для Windows 2000 (bulk mode only), xpvista7 - для Windows XP/Vista/7 x32, vista64 - для Windows Vista x64. Драйвер выбирается после подключения нашего устройства. Вообщем стандартная схема. Далее для загрузки прошивки в наш контроллер качаем cdc232.2011-06-24.zip, где и выбираем прошивку под наш контроллер. Выставляем фьюзы H = 0xCD, L=0xFF. Все готово. Ниже схема взаимодействия преобразователя и ПК.

Устройство работате следующем образом: при подключении к ПК появляется виртуальный COM- порт. Далее происходит передача по интерфейсу RS232C , без упраляющих линий DTR, DTS, RTS, CTS.
После этого необходимо проверить работоспособность с помощью программы Terminal — качаем там же. Результат работы преобразователя можно просмотреть на примере с DoctorAVR и контроллера сбора данных (логгера).

В следующей статье№9 рассмотрим основу работы барьера на микроконтролере, программную и аппаратную часть. На этом все. Всем пока.