Atmega Rts Cts Драйвер

AVR-CDC: виртуальный COM-порт через Low-Speed USB (используется библиотека V-USB) Написал microsin В статье описывается 2 проекта, основанные на библиотеке V-USB - CDC-232 и CDC-IO. Автор - Osamu Tamura @ Recursion Co., Ltd. Оба проекта представляют из себя простую схему на микроконтроллере AVR ( ATtiny45/85, ATtiny461, ATtiny2313, ATmega8/48/88), которая при подключении к порту USB компьютера (далее просто PC) создает виртуальный COM-порт. В обоих проектах используется бесплатная библиотека V-USB, которая позволяет средствами firmware, прошитого в микроконтроллер AVR, поддержать работу интерфейса USB. Первый проект (CDC-232) создает на компьютере виртуальный COM-порт, через который можно обмениваться данными с каким-нибудь другим устройством, имеющим низковольтный RS-232C (например, с микроконтроллером AT89C51 Atmel). Второй проект (CDC-IO) тоже создает виртуальный COM-порт, но он предназначен для управления ресурсами микроконтроллера (регистрами внутреннего назначения). То есть посылкой простых текстовых команд в консольной программе Вы можете менять состояние ножек микроконтроллера AVR, читать их состояние, управлять таймерами - счетчиками, PWM, читать ADC и т.

[ CDC-232] CDC-232 создает виртуальный COM-порт на PC, даже если он не имеет реального порта RS-232C. Это позволяет производить обмен данными RS-232C (без сигналов управления) после подсоединения устройства и установки драйвера. Виртуальный COM-порт, работающий через программную реализацию USB [ Применение] Запрограммируйте AVR, спаяйте схему и подключите устройство в порт USB компьютера. Установите драйвер (если у Вас операционная система Windows). Получите доступ к устройству через сгенерированный виртуальный COM-порт из программы терминала или написанную Вами программу (которая работает с COM-портом).

Честно говоря, мы все обленились. Наши прадеды могли спаять схему из сотни элементов за один вечер и не обламывались. Нам же подавай все готовенькое. Примером является простой переходник с COM порта на TTL уровень. Кажется схема в 5 деталей, а как лениво паять. 040-cdcmega.zip v1.0 [13.25 KB] - прошивка UART to USB для ATmega8/48/88/168. Прошивка предусматривает работу управляющих линий (CTS, RTS, DTR), но для UART они не нужны и я их не выводил на разъем интерфейсов. Необходимо установить драйвер виртуального COM порта.

Сигналы управления (DTR, DTS, RTS, CTS) не используются, поэтому настройте программу терминала в режим 'no flow-control' (без контроля потока). Windows запросит установку драйвера заново всякий раз, когда Вы подключите устройство в другой порт USB. Ранее установленный драйвер детектируется автоматически. Будет назначен другой номер COM-порта. Если Вы установите серийный номер в AVR (пересоберите исходный код с новым usbconfig.h), Вы можете получить тот же самый номер COM-порта на любом порте USB.

Но в этом случае Вы не можете подключить сразу несколько устройств CDC с одним и тем же серийным номером. Перед тем, как отсоединить устройство, закройте COM-порт в терминалной программе или в Вашем самописном приложении. В противном случае Вы не сможете подключить устройство снова из-за неверного дескриптора файла (broken file handle). В этом случае перезапустите программу терминала или Ваше приложение. Переключиться в режим быстрой передачи можно использованием 'lowcdc.vbs', при этом можно получить скорость выше 9600 bps. Loop-back тест на версии ATtiny45 [ Принципиальные схемы] Эти схемы рассчитаны на ATtiny45/85, ATtiny2313/AT90S2313 и ATmega8/48/88/168. У всех этих микроконтроллеров firmware программируется через ISP.

Красный LED понижает напряжение USB от 5V до 3.3V, и предоставляет его для AVR. Ток потребления около 10mA, и его мало для питания других узлов. Когда полключаетесь к другому MCU (микроконтроллеру), соедините Gnd и соедините TxD и RxD крест-накрест. R4 ограничивает обратный ток, когда внешний MCU питается от Vcc 5V (Вы можете R4 не ставить, если напряжение питания внешнего MCU равно 3.3V).

R5 защищает ножку TxD, когда она замкнута на Gnd. Вы можете опустить и R4 и R5, если Вы соединяетесь через RS-232C драйвер наподобие MAX232. Используйте кварцевый резонатор. Несмотря на то, что керамический резонаторв в большинстве случаев работает хорошо, но для данного применения он не подходит, поскольку иход частоты слишком большой, и поэтому устройство может работать нестабильно. ATtiny45/85 использует внутренний RC-генератор и PLL.

Он откалиброван на частоту 16.5 МГц по частоте сигнала SOF (Start Of Ftame) порта USB, когда устройство подключено к PC. UART в этом случае реализован программно. Он не может поддерживать высокую скорость передачи данных. Если TxD и RxD проинвертированы (пересоберите проект с опцией -DINVERT), Вы можете напрямую подключиться к сигналам RS-232C. Формат настройки порта 300-4800bps, 8N1. CDC-232 для ATtiny45-20 Пример на ATtiny45 с использованием коннектора mini-B У микроконтроллера ATtiny2313/AT90S2313 всего лишь 2 KB памяти программ.

Механизм установки терминала опущен (т. Автодетекта скорости нет). Установите переключатель DIP для смены скорости. CDC-232 для ATtiny2313-20 У микроконтроллеров ATmega8/48/88's внутренний UART конфигурируется от PC автоматически. Формат настройки 1200-57600bps, данные 7/8, четность N/E/O, количество стоп-бит 1/2 CDC-232 для ATmega8/48/88-20 Подключение к физическим линиям RS-232C требует инверсии полярности TxD и RxD, а также соответсвие уровней сигнала. Используйте специальную IC наподобие MAX232. Вы можете её заменить простыми схемами (см.

Когда целевой MCU имеет другое питание Vcc (отличное от 3.3V), образуются обратные токи утечки через сигнальные линии. Это искажает сигнал, либо подпитывает MCU без источника питания. Эта схема не очень хороша, но достаточна для большинства случаев. [ CDC-IO] CDC-IO управляет регистрами специального назначения (Special Function Registers, SFR) микроконтроллера AVR через виртуальный COM-порт на PC. Это позволяет свободно читать/записывать параллельные порты MCU (ножки микроконтроллера). Работают также операции с таймерами/счетчиками, PWM, ADC, EEPROM, что позволяет приложению на PC достичь очень глубокого управления микроконтроллером и разрабатывамым на нем устройством. Внешний интерфейс с использованием программной реализации протокола USB [ Применение] Инсталляция такая же, как и у CDC-232.

Скорость COM-порта произвольна. Отправка текстовых команд происходит через программу терминала или из вашей программы на PC. Если Вы хотите получить более высокую скорость передачи, используйте 'lowcdc.vbs' для переключения в bulk transfer mode. Набор команд CDC-IO (Instruction Set) Функция Команда Формат Ответ Who @ @ 'cdc-io', CR-LF Get?

Data, CR-LF Set = data address = CR-LF AND & Set & data address & CR-LF OR & Set data address CR-LF EX-OR & Set ^ data address ^ CR-LF Set Double $ data2 data1 address $ CR-LF Версия с ATtiny2313 имеет только команды 'Set', 'Get', 'Xor'. В таблице команд использованы следующие обозначения: address: адрес регистра SFR, отображенный на память (memory mapped) в hex-формате data: 8 бит данные в hex разделитель: Tab, Space, CR, LF predefined addr (предопределенные символические адреса, case-insensitive, НЕ поддерживаются ATtiny2313): PINB, DDRB, PORTB PINC, DDRC, PORTC PIND, DDRD, PORTD Примеры ('_' означает разделитель): DDRB_?_ Возвращает значение DDRB вместе с CR-LF. 12_34_=_ Запись 0x12 по адресу 0x34, в ответ возвращает CR-LF. FB_PORTC_&_ Запись (PORTC & 0xFB) в PORTC, возвращает CR-LF.

(примеры для ATtiny2313) 36_?_ Возвращает величину PINB(0x36) вместе с CR-LF. 12_37_=_ Запись 0x12 по адресу DDRB(0x37), возвращает CR-LF. FB_38_^_ Запись (PORTB ^ 0xFB) в PORTB(0x38), возвращает CR-LF. Предыдущие данные и адрес могут быть использованы повторно.

Просто введите смвол команды для повтора. Команда 'Set Double' используется для записи в EEPROM.

Избегайте изменения бит порта, на котором присутствуют сигналы USB. Используйте '&', ' ' или '^' для модифицирования направления порта (вход или выход). Используйте PIN* для переключения бит в противоположное состояние (toggle), если порт назначен как выход (output). Когда разрешены прерывания, сообщается номер вектора прерывания, когда оно вызывается. Все регистры SFR доступны.

Даташит AVR для использования таймеров, ADC, EEPROM, и т. [ Принципиальные схемы] Если напряжение питания Vcc целевой схемы равно 5V, и порты AVR сконфигурированы как входы, поставьте резисторы (3K310Kом) для предотвращения обратного тока.

Используйте только кварцевый резонатор. Несмотря на то, что керамический резонаторв в большинстве случаев работает хорошо, но для данного применения он не подходит, поскольку иход частоты слишком большой, и поэтому устройство может работать нестабильно. ATtiny45/85 использует внутренний RC-генератор и PLL. Он откалиброван на частоту 16.5 МГц по частоте сигнала SOF (Start Of Ftame) порта USB, когда устройство подключено к PC. CDC-IO для ATtiny45-20 CDC-IO для ATtiny461-20 Для ATtiny2313 реализованы только команды 'Set', 'Get' и 'Xor' из-за ограниченной памяти программ этого микроконтроллера. Эта версия также не имеет механизма interrupt-report.

CDC-IO для ATtiny2313-20 CDC-IO для ATmega8/48/88-20 [ Пример программы] Это экспериментальная схема и пример программы для ATmega8/48. Программа написана на C, VB, VC, VC++ и C#. Вы можете использовать другие языки (или макросы), если они могут работать с портом RS-232C. На фото показан внешний вид экспериментальной схемы Регулятор изменяет тон пищалки и маску мигания светодиодов.

[ Пример управления без программы] Операционные системы позволяют работать с COM-портами, как с обычными файлами. Вот так, например, под Windows Вы можете послать команду устройству, которое создает виртуальный COM-порт COM3 (в текстовом файле comands.txt записана последовательность команд): c: temp>copy comands.txt COM3 1 file(s) copied. Что интересно - под Windows XP можно использовать только имена COM1.COM9. Имена COM10, COM11, COM12, COM13 и далее Windows не воспринимает как системные, и думает, что это не порт, а файл (даже если такой порт реально имеется в Диспетчере Устройств). [ Ссылки] 1..

Последнее обновление ( ). Комментарии • Andry 2013-03-27 07:28:46 Собрал CDC-IO устройство на ATtiny45. Для общения с устройством использовал AutoIt3 с библиотекой CommG для работы с СОМ портами. Нужно мне было АЦП + управление(on/off). Не с первого раза, конечно, но получилось. Команды такие: '87 26 = '; ADCSRA '8F 27 = '; ADMUX '00 23 = '; ADCSRB; в цикле 'C7 26 = '; ADCSRA старт АЦП '24? '; ADCH Это измерение внутреннего термодатчика.

Полезный совет тем, кто будет работать с CDC-IO. Для обращения к регистрам указывать их адрес, когда я использовал названия регистров у меня нестабильно работало.

При чтении шестнадцатиразр ядных (двухбайтных) регистров обязательно нужно читать оба регистра, даже если нужен только один. Сначала читаем младший ADCL потом старший ADCH. С таймерами/счетчиками так же. • Max 2012-12-18 20:32:49 Имена COM10, COM11, можно использовать, — нужно открывать их как.COM10 • Вадим 2012-10-11 08:19:34 Ломаю голову уже неделю над CDC-IO. С считыванием состояний и записью портов понятно,но никак не могу заставить работать АЦП.

Посылаю: 00 PORTB = 00 PORTC = 0F DDRC = 10 TCCR1A = 04 ADMUX = 87 ADCSRA = (взято из родного промера). А в ответ на ADCH? Всегда приходят 00. (все лапы порта С посажены на переменные резисторы). • foxit 2011-03-13 09:44:21 Если я правильно понимаю, на основе CDC-IO можно создать программу для ПК, которая будет конфигурировать периферию МК на выполнение конкретных задач?

Microsin: да, Вы правильно поняли, причем не только конфигурировать, а вообще делать все что угодно. Программа сможет управлять абсолютно всеми ресурсами микроконтроллер а - читать память, читать состояние каждого порта, управлять ножками (зажигать светодиоды, включать реле и т.

На таком же принципе работает класс-обертка C# Сергея Кухтецкого, см. Пример использования такого класса тут - Разница между этим классом-оберткой и CDC-IO в том, что для CDC-IO программу для компьютера можно даже не писать, а воспользоваться обычным терминальным клиентом. • AIL 2010-04-23 11:16:28 Чтоб не мучиться, будет дрыгать ногами программатора, не будет дрыгать, можно просто зайти вот сюда: • Sergey 2010-04-07 13:44:02 Правильно ли я понял, что это 'чудо' позволяет подключать к USB порту COM-программаторы AVR и PIC, которые 'дрыгают ногами'? Например, ExtraPIC или UNIPROF? Microsin: CDC-IO в чистом виде подойдет только для 'дрыгания ногами' и чтения регистров микроконтроллер а по текстовым командам, подаваемым через виртуальный COM-порт.

Никакой программатор он не позволит подключить к USB-порту. CDC-232 в чистом виде подойдет как переходник между USB и TTL COM-портом программатора. При наличии исходников программатора с COM-портом (и рук, растущих из нужного места), этот программатор можно переделать на USB-интерфейс, если взять за основу проект CDC-232 или CDC-IO. • lynch 2010-01-31 18:21:39 с настройкой и компиляцией firmware проблем нет, интересует необходимо ли перекомпилирова ть драйвер устройства для windows microsin: ничего перекомпилирова ть не нужно, драйвер можете взять готовый - тот, что предлагает автор проекта (см. Сам я перекомпилирова ть драйвер не пробовал (не было необходимости). Под Windows компиляцию проектов с Makefile обычно поддерживает система MinGW.

• lynch 2010-01-30 17:52:58 как и чем скомпилить под винду драйвер, если частота контроллера 16 мегагерц? Microsin: Ваш вопрос звучит несколько противоречиво, но я кажется, догадался, что имеется в виду - хотите в среде Windows скомпилировать firmware CDC-232 или CDC-IO на другую частоту кварца.

Это можно сделать, если заменить старую версию библиотеки V-USB, которая используется в проектах Osamu Tamura CDC-232 и CDC-IO, на версию посвежее (можете взять последнюю версию на сайте obdev.at, а можете взять русифицированны й вариант у меня на сайте - В свежей версии библиотеки есть возможность выбрать частоту кварца из ряда 12, 15, 16, 16.5 и 20 МГц (задается в Makefile). Скомпилировать с использованем Makefile в среде Windows можно, если у Вас установлен пакет WinAVR (там есть все что нужно - make, gcc и проч.).

Делается это как с командной строки cmd. Спид Инфо С Ног Наголову подробнее. exe, так и с помощью AVR Studio. Ссылку №2 - там выложил проект CDC-232 для AVR Studio, где применяется ATmega16 и кварц на 16 МГц.

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

Конечно очень просто передать на COM порт (RS232) или LPT, но не у всех есть данный порт например ноутбуки. Есть много преобразователей, например на схеме MAX232 (RS232-UART) и другие. Но мы с Вами рассмотрим преобразователь на микроконтроллере. Если Вы увлекаетесь электроникой и прикладным программированием, то данный девайс станет вашим верным инструментом. Ниже приведена схема преобразователя. Даная схема и драйвера были взяты из следующего ресурса, где описываются различные варианты передачи данных на ПК, а также драйверы и открытые исходники предоставленные неким автором 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 и контроллера сбора данных (логгера). В рассмотрим основу работы барьера на микроконтролере, программную и аппаратную часть.

    Search