Подключение микроконтроллера avr к компьютеру

Обновлено: 21.11.2024

Всем привет
Я хочу отправить данные с одного AVR на другой.
Сначала я собираюсь отправить данные на компьютер, чтобы узнать, что я отправил с AVR1 (я хотел бы увидеть, что было отправлено).
Как я могу подключить AVR к ПК?
Я не знаю, как подключить вывод AVR TX к компьютеру.

alexan_e

Администратор

Присоединился 16 марта 2008 г. Сообщений 11 895 Помогло 2 021 Репутация 4 158 Очки реакции 2 032 Трофейные очки 1 393 Местоположение Греция Очки активности 64 373

паавитра

ягуби

кшиварам

Продвинутый уровень участника 5

Присоединился 21 апреля 2008 г. Сообщений 5 070 Помогло 2 149 Репутация 4 304 Очки реакции 2 089 Трофейные очки 1 393 Местоположение Виллинген (Германия) / Бангалор Очки активности 30 086

но вам нужно подключить MAX232 к UART контроллера.

паавитра

ягуби

хонгфук118

Уровень участника 2

Зарегистрирован 25 июня 2011 г. Сообщений 52 Помогли 4 Репутация 8 Очки реакции 4 Трофейные очки 1 288 Местоположение Ханой, Вьетнам Очки активности 1 514

большой доггуру

Администратор

Присоединился 12 марта 2010 г. Сообщений 9 831 Помогло 2 349 Репутация 4 692 Очки реакции 2 276 Трофейные очки 1 413 Местоположение Southwest, USA Очки активности 62 369

Имеет ли ваш AVR периферийный интерфейс USB?

Если нет, вы можете использовать микросхему моста USB-UART или коммутационную плату с устройством FT232:

После того, как интерфейс USB подключен к вашему ПК, вы можете получить доступ к виртуальному последовательному COM-порту, как если бы это был обычный последовательный порт.

Silicon Labs также производит мостовое устройство USB-UART.

Они очень удобны, я держу несколько на скамейке.

хонгфук118

Уровень участника 2

Зарегистрирован 25 июня 2011 г. Сообщений 52 Помогли 4 Репутация 8 Очки реакции 4 Трофейные очки 1 288 Местоположение Ханой, Вьетнам Очки активности 1 514

кшиварам

Продвинутый уровень участника 5

Присоединился 21 апреля 2008 г. Сообщений 5 070 Помогло 2 149 Репутация 4 304 Очки реакции 2 089 Трофейные очки 1 393 Местоположение Виллинген (Германия) / Бангалор Очки активности 30 086

Проверьте техпаспорт используемого контроллера AVR, чтобы убедиться, что он поддерживает USB. то для этой цели вам следует использовать кабель USB-serial..

хонгфук118

Уровень участника 2

Зарегистрирован 25 июня 2011 г. Сообщений 52 Помогли 4 Репутация 8 Очки реакции 4 Трофейные очки 1 288 Местоположение Ханой, Вьетнам Очки активности 1 514

В программаторе AVR мы используем atmega8 для подключения напрямую к USB-порту.
Я думаю, мы можем использовать его для atmega16.

большой доггуру

Администратор

Присоединился 12 марта 2010 г. Сообщений 9 831 Помогло 2 349 Репутация 4 692 Очки реакции 2 276 Трофейные очки 1 413 Местоположение Southwest, USA Очки активности 62 369

В программаторе AVR мы используем atmega8 для подключения напрямую к USB-порту.
Я думаю, мы можем использовать его для atmega16.

Я полагаю, вы имеете в виду интерфейс USB программатора USBasp:

Который использует интерфейс softUSB без периферийного оборудования. Однако код для его реализации находится на ассемблере, и его может быть сложно перенести в другие проекты.

---------- Сообщение добавлено в 07:06 ---------- Предыдущее сообщение было в 07:02 ----------

Вот еще одна реализация softUSB для AVR:

Надеюсь, это поможет вам в ваших начинаниях.

alexan_e

басса

хонгфук118

Уровень участника 2

Зарегистрирован 25 июня 2011 г. Сообщений 52 Помогли 4 Репутация 8 Очки реакции 4 Трофейные очки 1 288 Местоположение Ханой, Вьетнам Очки активности 1 514

Пит77

Уровень новичка 2

Присоединился 16 сентября 2011 г. Сообщений 2 Помогли 1 Репутация 2 Очки реакции 1 Трофейные очки 1 283 Очки активности 1 295

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

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

Учебное пособие по сопряжению ПК с Windows 10 с микроконтроллером ATmega328P с использованием протокола RS485 для двунаправленной связи.

В первом случае

Во втором случае

ПК отправит символы ASCII на микроконтроллер ATmega328P по каналу RS485, а светодиоды, подключенные к микроконтроллеру, загорятся в зависимости от команды

Код для ATmega328P написан на AVR C с использованием ATMEL Studio 7 или Microchip Studio.

Содержание

Требуется оборудование

1) Микроконтроллер ATmega328P, подключенный к микросхеме MAX485 или аналогичной.

2) Преобразователь USB в RS485, аналогичный преобразователю USB2RS485 (на базе FT232).

3) ПК с ОС Windows

Принципиальная схема

Схема сопряжения микросхемы MAX485 с микроконтроллером ATmega328P показана ниже.

Вы можете нажать на изображение, чтобы увеличить его разрешение.

Микроконтроллер ATmega328P работает на внешнем кристалле с частотой 11,05982 МГц.

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

Связь между ПК и ATmega328P является полудуплексной, т. е. либо передача, либо прием происходят одновременно.

Вывод RXD ATmega328P подключен к выводу RO микросхемы MAX485 RS485, поэтому данные, полученные с линии RS485, отправляются на приемный вывод микроконтроллера.

Вывод TXD ATmega328 подключен к выводу DI MAX485, поэтому любые данные, передаваемые ATmega328p, отправляются на микросхему MAX485 и выводятся на кабель витой пары RS485.

PD2 подключен к контакту ~RE MAX485, который имеет активный низкий уровень. Установка на этом выводе низкого уровня переводит MAX485 в режим приема.

PD3 подключен к выводу DE MAX485, который имеет активный высокий уровень. Установка на этом выводе высокого уровня переводит MAX485 в режим передачи.

Чип MAX485 может одновременно передавать или принимать только данные, поэтому связь является полудуплексной.

Исходные коды

Боковой код AVR Atmega написан на языке Embedded C с использованием ATMEL Studio 7.

Передача данных с микроконтроллера на ПК по RS485

ATmega328p передает строку, состоящую из символов ASCII, на ПК с помощью 2- или 3-проводного витого кабеля RS485.

В руководстве предполагается, что пользователь знаком с

ATmega328p взаимодействует с MAX485, как показано на предыдущей принципиальной схеме.

Преобразователь USB в RS485 используется для подключения кабеля витой пары RS485 к USB-порту ПК.

Дифференциальная пара MAX485 подключается к порту A преобразователя USB в RS485

и дифференциальная пара B MAX485 подключена к порту B преобразователя USB в RS485

как показано на приведенной выше блок-схеме.

Тип кабелей RS485

Для связи RS485 можно использовать

  • 2-жильный кабель (A,B), в данном случае нет линии заземления.
  • 3-жильный кабель (A,B,GND).

Для передачи на большие расстояния рекомендуется трехпроводное соединение A, B и GND.

Перевод ATmega328 в режим передачи RS485

1) Установите контакты порта ATmega328p (PD2 и PD3), управляющие ~RE и DE, в качестве выходных данных в регистре направления DDRD.

2) Установите PD3, который управляет DE (MAX485), на высокий уровень, переведя микросхему MAX485 в режим передачи.

Также установите PD2, который управляет ~RE (из MAX485), на высокий уровень, отключив режим приема.

4) Передаваемая строка хранится в массиве символов и передается на ПК побайтно с помощью цикла while().

5) В конце мы передаем символ новой строки (\n).

Поскольку большинство ПК/ноутбуков не имеют портов RS485, мы должны использовать преобразователь USB в RS485,

Здесь мы используем преобразователь USB2RS485 на базе FT232RL.

Схема преобразователя USB в RS485

Вы можете узнать номер COM-порта, зайдя в Диспетчер устройств на ПК с Windows.

После открытия соединения с последовательным портом.

программа установит направление преобразователя USB в RS485 как прием, управляя выводами ~RTS и ~DTR FT232,

которые подключены к MAX485 (в преобразователе USB2RS485), как показано на рисунке выше.

После того, как MAX485 переведен в режим приема, программа попытается прочитать переданные символы, пока не встретит символ новой строки.

После чего программа выведет данные на экран консоли.

Вот результат работы программы на ПК с Windows 10

ATmega328P Получение данных с ПК по RS485

В этом случае ПК выступает в роли передатчика, а ATmega — в роли приемника.

ПК отправляет символы ASCII «A», «B», «C» на ATmega328 с помощью витого кабеля RS485, а ATmega включает и выключает светодиоды, подключенные к его портам.

Режим приема ATmega328P RS485

Код и концепции аналогичны описанной ранее передаче.

Разница здесь в том, что

MAX485 переводится в режим приема, когда на выводе ~RE устанавливается низкий уровень .

и ATmega328p ожидает в цикле получения символов,

После получения символов используется оператор Switch() для включения и выключения светодиода в зависимости от команд.

Мы переводим MAX485 в преобразователь USB в RS485 в режим передачи, так как отправляем данные на ATmega.

который будет получен микроконтроллером.

Дополнительное чтение

Вы можете перейти по ссылке ниже.

В статье также рассказывается о переносе кода в системы Linux с использованием платформы Mono из Xamarin.

В этом руководстве мы узнаем, как запрограммировать USART (uart) микроконтроллера ATmega328P для связи с ПК с Linux/Windows с использованием протокола асинхронной последовательной связи.

Микроконтроллер ATmega328p будет отправлять и получать данные (строки ASCII) на ПК под управлением операционной системы Linux или Windows, используя свои (ATmega328p) контакты UART.

Данные будут приниматься/передаваться программой эмуляции терминала, такой как PuTTY или Tera Term.

Исходные коды

  • Код для раздела микроконтроллера написан на встроенном C и скомпилирован с использованием AVR-GCC (WinAVR).
  • Шестнадцатеричный код загружается в Atmega328p с помощью AVRDUDE с помощью USBasp Programmer.
  • Все исходные коды, включая файлы Make, доступны в нашем репозитории Github.

Настройка подключения оборудования

Мы используем 32-контактную версию TQFP микроконтроллера ATmega328p. Если вы используете 28-контактную версию DIP, убедитесь, что номера контактов совпадают, обратившись к техническому описанию ATmega328p.

ATmega328p работает на внешнем кварцевом кристалле с частотой 11,0592 МГц.

Обратите внимание,

  • TXD ATmega328 подключен к RXD преобразователя USB в последовательный интерфейс
  • RXD ATmega328 подключен к TXD преобразователя USB в последовательный интерфейс

На следующей блок-схеме показаны аппаратные соединения установки.

Поскольку ПК не может принимать сигналы UART напрямую от микроконтроллера ATmega328P, для преобразования последовательных сигналов TTL в протокол USB используется преобразователь USB в последовательный порт на основе FT232RL.

ATmega328p USART

Универсальный синхронный и асинхронный последовательный приемник и передатчик (USART) — это настраиваемое периферийное устройство ATmega328p, которое поддерживает как синхронный (SPI), так и асинхронный (последовательный) протоколы связи.

В нашем случае мы будем иметь дело только с асинхронной связью.

Инициализация USART

Прежде чем можно будет установить связь, USART должен быть инициализирован. Процесс инициализации состоит из следующих шагов.

  • Настройка скорости передачи
  • Установка формата кадра (здесь 8N1)
  • Включение передатчика или приемника в зависимости от использования.

Установка скорости передачи

USART без проблем поддерживает все распространенные скорости передачи данных от 2400 бит/с до 230,4 кбит/с. Вы можете увеличить скорость до 2,5 Мбит/с для кристаллической частоты 20 МГц. Максимум, которого мы можем достичь на машине с Windows7, составляет 230,4 кбит/с.

Требуемую скорость можно выбрать, записав соответствующее значение в регистр UBBRn.

В техническом описании ATmega328p есть раздел, посвященный часто используемым скоростям передачи, частотам ошибок, кварцевым частотам и соответствующим значениям UBBRn. Вы можете просмотреть эту таблицу в техническом описании и выбрать нужные значения UBBRn.

Значения UBBRn в столбце U2Xn =1 соответствуют удвоенной скорости передачи USART, которую можно игнорировать.

Если вы посмотрите таблицу в техническом описании, вы обнаружите, что частота ошибок близка к нулю при использовании дробных тактовых частот (fOSC), таких как 1,84 МГц, 3,68 МГц, 7,37 МГц или 11,0592 МГц.

В нашем случае мы используем кварцевую частоту 11,0592 МГц. В приведенной ниже таблице показаны соответствующие значения UBBRn и коэффициенты ошибок для значения fOSC , равного 11,0592 МГц.

Установка частоты кадров.

Последовательный кадр определяется как поток битов данных с битами синхронизации (стартовый и стоповый биты) и, при необходимости, битом четности для проверки ошибок.

USART поддерживает следующую комбинацию стартовых/стоповых/данных/битов четности.

  • 1 стартовый бит
  • 5, 6, 7, 8 или 9 бит данных
  • Нет, ЧЕТНЫЙ или НЕЧЕТНЫЙ бит четности
  • 1 или 2 стоповых бита

Кадр начинается со стартового бита,
за которым следуют биты данных (всего от пяти до девяти битов данных): сначала младший бит данных, затем следующие биты данных, заканчивающиеся старшим битом .
Если включено, бит четности вставляется после битов данных перед одним или двумя стоповыми битами.

Когда передается полный кадр, за ним может сразу следовать новый кадр, или линия связи может быть переведена в состояние ожидания (высокий уровень).

В нашем случае мы используем настройку 8N1, т.е.

Регистр управления и состояния USART 0 C или UCSR0C управляет настройками кадра USART atmega328.

Поскольку мы используем формат 8N1, нам не нужно ничего менять, так как настройки по умолчанию (0x06) дают конфигурацию 8N1.

Настройка в качестве передатчика или приемника

Регистр управления и состояния USART 0 B или UCSR0B содержит биты для настройки USART в качестве передатчика, приемника или обоих.

  • Включение бита TXEN0 настраивает USART как передатчик
  • Включение бита RXEN0 настраивает USART в качестве приемника

Настройка любого из битов (TXEN0 или RXEN0) переопределяет обычные функции портов соответствующих контактов, т. е. контакты GPIO конфигурируются либо как TXD, либо как RXD.

ATmega328 передает строку на ПК

Мы собираемся непрерывно передавать строку ASCII "Привет от ATmega328p" на ПК.

Программа PuTTY, запущенная на ПК, получит его и отобразит на консоли.

Скорость передачи установлена ​​на уровне 230,4 кбит/с в формате 8N1.

Код показывает, как организована программа для передачи данных строки ASCII "Привет от ATmega328p" на ПК,

Я новичок в мире AVR и работаю над проектом, в котором я хочу иметь графический интерфейс на своем ПК, который должен отдавать команды AVR и считывать из него значения.

Например, я хочу сделать что-то вроде секундомера. Если я нажму кнопку программного обеспечения, таймер в AVR должен запуститься. Если я нажму другую кнопку, таймер должен остановиться, и значение таймера должно быть отправлено на мой компьютер.

Как мне подключить микроконтроллер к компьютеру? Есть ли только вариант с мостом USB UART или есть какие-то другие варианты?

Надеюсь, кто-нибудь сможет мне помочь.

Заранее спасибо,

Клоусон

Как подключить микроконтроллер к компьютеру? Есть ли только вариант с мостом USB UART или есть какие-то другие варианты?

Я думаю, что большинство согласится с тем, что если это не AVR, который уже имеет встроенный USB, то самый простой способ подключения к ПК — это использование UART AVR. Для этого вам понадобится кабель/переходник между ПК и AVR. В старые времена вы бы купили кабель USB-RS232, который подключается к USB на конце ПК и представляет собой интерфейс «RS232» на конце кабеля, обращенном к AVR (который на ПК «выглядит» как порт COM7 или аналогичный) . Недостатком таких кабелей является то, что RS232 не совсем совпадает с сигналами UART AVR (он использует дикие напряжения, такие как +12 В и -12 В, которые могут повредить AVR), поэтому вам также пришлось использовать микросхему преобразователя в схеме схемы AVR. - обычно это Maxim MAX232 или совместимый, который с помощью 4 или 5 конденсаторов будет создавать «насос заряда», чтобы усилить сигналы AVR до уровней +/1-12 В, а также защитить AVR от входных уровней, снижающих их. до 0В..5В.

Но затем какой-то яркой искре пришла в голову идея сделать кабели USB-RS232 (которые сами также имели эквивалент MAX232 на конце), которые просто передавали сигналы от ПК на том же уровне, что и AVR. Как только кто-то начал делать это, все начали это делать, и если вы теперь зайдете на ebay для своей страны и введете в поиск «USB TTL», вы найдете любое количество устройств, подобных этим:

И да, эти вещи стоят чуть больше 1 фунта стерлингов, ВКЛЮЧАЯ доставку из Гонконга (как они это делают??). Единственным недостатком заказа из Китая и/или Гонконга является то, что доставка может занять несколько недель. Вы можете найти местных поставщиков с кабелями USB-TTL в 2-3 раза дороже (все еще «дешево»!), которые могут доставить их в течение нескольких дней.

навес

Только в мир AVR или в мир микроконтроллеров вообще?

(остальная часть вопроса предполагает последнее)

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

навес

Единственный (sic?) недостаток заказов из Китая и/или Гонконга заключается в том, что доставка может занять несколько недель.

И риск получить сомнительную фишку.

Если я использую такой кабель, можно ли будет отправлять значения переменных, таких как значения таймера или датчика, на USB/последовательный порт моего ПК и считывать их с помощью Visual Basic?

Звучит отлично. Думаю заказать такой кабель.
Я читал о AVR со встроенным USB. С ними сложнее справиться?

бобгарднер

Загрузите таблицы данных для пары AVR Atmel и внимательно их прочитайте. На компьютерах Arduino установлены процессоры AVR, а система разработки программ Arduino предназначена для легкого использования новичками. Слышали об Ардуино?

Пользователь компилятора Imagecraft

Спасибо за комментарий.

На самом деле я нашел плату Arduino, которую заказал некоторое время назад. Почти все заработало :-)

Но мне в голову пришел один вопрос.

Если я использую плату Arduino Uno в одном проекте, придется ли мне потом встраивать в нее всю плату или можно использовать только чип?

навес

USB на несколько порядков сложнее (т. е. "сложнее"), чем UART. Вот как FTDI и др. могут неплохо зарабатывать на продуктах USB-to-UART!

USB — это проект не для начинающих!

Если я использую плату Arduino Uno в одном проекте, придется ли мне потом встраивать в нее всю плату или можно использовать только чип?

/M

навес

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

валюсофт

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

или просто соберите его на доске/верокартоне

Росс Маккензи, Мельбурн, Австралия

гчапман

"Не смейте быть наивным." - Бакминстер Фуллер

Симонетта

Кабель, который вы представили, предназначен для подключения ПК к AVR. Однако это примерно в десять раз дороже, чем последовательные платы USB-to-TTL. Эти платы делают то же самое: они подключаются к USB-порту ПК и подают логические сигналы последовательного порта с напряжением +5 В и заземлением на AVR.

Каждая из плат USB-to-TTL имеет микросхему, которая обеспечивает связь с USB-портом ПК. Для этих ИС необходимо, чтобы на ПК был установлен программный драйвер, который распознает ИС, когда она подключена к ПК, и создает последовательный порт на ПК. Как правило, вы можете найти драйверы для этих различных микросхем в Интернете. У них будут программы setup.exe внутри ZIP-файла, а также программы .DLL (которые являются самим кодом драйвера).

Существует около 4-5 компаний, которые производят микросхемы USB-TTL (последовательные). Микросхемы в основном известны по номерам моделей, таким как PL2303HX, FTDI 232, CH340. Для каждого нужен свой драйвер. Все они работают примерно одинаково.

Большинство дешевых плат с последовательным интерфейсом USB дают только линии передачи и приема. Однако ИС имеют все исходные сигналы последовательного порта. Более новые платы, такие как платы с микросхемами CH340, также часто выдают сигналы CTS и DTR. Они полезны для передачи блоков данных между ПК и AVR. Например, у меня есть программатор последовательного EEPROM AVR, который получает 128 байт от ПК на полной скорости, когда на линии CTS низкий уровень. Затем AVR переводит CTS в высокий уровень до тех пор, пока не закончит обработку этих 128 байтов. Затем он снова устанавливает CTS в низкий уровень, чтобы получить следующий блок из 128 байтов. Дешевые платы с последовательным интерфейсом USB не могут этого сделать, потому что производитель не подключил линию от контакта CTS на микросхеме к выходному разъему заголовка на плате.

Вот пример недорогой платы Arduino ATmega328P с микросхемой USB CH340:

После того, как драйвер для микросхемы USB установлен и работает, последовательный порт появится в списке последовательных портов ПК. Затем вы можете использовать Visual BASIC для связи с портом и отправки/получения байтов от него. Но это не стабильный номер последовательного порта. Каждый раз, когда вы отсоединяете USB-кабель, ПК может указывать другой номер порта и может потребоваться переустановка драйверов. Это общий дефект самого USB.

Читайте также: