Андрей Смирнов
Время чтения: ~19 мин.
Просмотров: 0

Arduino usb uart чипы и драйвера ch340, ch340g, ftdi

Настраиваем Arduino IDE

Запустить Arduino IDE, выбрать плату (Инструменты\плата\»ваша плата»). См. первый скриншот.

Выбрать порт: инструменты\порт\«COM отличный от COM1, например COM3, COM5…» См. второй скриншот. Какой именно порт вы могли видеть при первом подключении Ардуино к компьютеру.Примечание: если у вас только СОМ1 — значит либо не встали драйвера, либо сдохла плата.

Готовые прошивки просто открываются двойным кликом

Чтобы загрузить прошивку, жмите кнопку ЗАГРУЗИТЬ на верхней панели инструментов, она в виде стрелочки.ВНИМАНИЕ, СОВЕТ! В ПУТИ К ПАПКЕ СО СКАЧАННЫМИ СКЕТЧАМИ НЕ ДОЛЖНО БЫТЬ РУССКИХ БУКВ! СОЗДАЙТЕ В КОРНЕ ДИСКА ПАПКУ ARDUINO, И РАБОТАЙТЕ В НЕЙ!

ВНИМАНИЕ, СОВЕТ! КАК ТОЛЬКО ДОСТАНЕТЕ ARDUINO ИЗ ПАКЕТИКА, СРАЗУ ПРОШЕЙТЕ В НЕЁ СКЕТЧ С МИГАНИЕМ СВЕТОДИОДА (blink.ino)Таким образом вы узнаете, что Ардуина изначально рабочая (на тот случай, когда после сборки/пайки она перестанет работать и прошиваться), то есть вы сами её сломали, а не она была изначально бракованная =)

Как установить библиотеку на Arduino
Допустим, скачали библиотеку. Её нужно разархивировать и положить в папку:
C:\Program Files (x86)\Arduino\libraries\ (Windows x64)
C:\Program Files\Arduino\libraries\ (Windows x86)

Как пример — библиотека для дисплея на чипе TM1637, смотрите скриншот

В папке libraries должна появиться папка TM1637, в которой есть папка examples, и два файла с расширениями .h и .cpp . Эти два файла должны быть в каждой библиотеке.

Второй способ. Папка с библиотекой кладётся в папку со скетчем. Тогда скетч, использующий библиотеку, сможет ей пользоваться. Но для остальных скетчей эта библиотека будет недоступна!
 

Основные ошибки при прошивке Arduino (FAQ)

Ошибка компиляции

Возникает на этапе сборки и компиляции прошивки, ошибки компиляции вызваны проблемами в коде прошивки, то есть проблема сугубо софтварная. Слева от кнопки «загрузить» есть кнопка с галочкой — проверка. Во время проверки производится компиляция прошивки и выявляются ошибки, если таковые имеются. Ардуино в этом случае может быть вообще не подключена к компьютеру.

  • В некоторых случаях ошибка возникает при наличии кириллицы (русских букв) в пути к папке со скетчем. Решение: завести для скетчей отдельную папочку в корне диска с английским названием.
  • В чёрном окошке в самом низу Arduino IDE можно прочитать полный текстошибки.
  • В скачанных с интернета готовых скетчах часто возникает ошибка с описанием «название файла» no such file or directory. Это означает, что в скетче используется библиотека «название файла», и нужно положить её в Program Files/Arduino/libraries. Ко всем моим проектам всегда идёт папочка с использованными библиотеками, которые нужно установить. Также библиотеки можно поискать в гугле по «название файла».
  • При использовании каких-то особых методов и функций ошибкой может стать неправильно выбранная плата в «Инструменты/плата«.
  • Если прошивку пишете вы, то любые синтаксические ошибки в коде будут подсвечены, а снизу в чёрном окошке можно прочитать более детальное описание, в чём собственно косяк.

Ошибка загрузки

Возникает на этапе, когда прошивка скомпилирована, в ней критических ошибок, и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за софта.

  • USB кабель, которым подключается Arduino, должен быть Data кабелем. Существуют кабели, предназначенные только для зарядки, у них внутри 2 провода. Data кабель имеет 4 провода, два из которых нужны для передачи данных.
  • Причиной ошибки загрузки являются неустановленные/криво установленные драйвера CH340, если у вас китайская NANO.
  • Также будет ошибка, если не выбран COM порт, к которому подключена Arduino. Если кроме COM1 других портов нет — читай два пункта над этим, либо попробуй другой USB порт, или вообще другой компьютер.
  • Большинство проблем при загрузке, вызванных «зависанием» ардуины или загрузчика, лечатся полным отключением ардуины от питания. Потом вставляется USB и прошиваем.
  • Если в описании ошибки встречается слово averdude или bootloader is not responding — с вероятностью 95% сдох загрузчик, например при случайном коротком замыкании провода на плату. Оставшиеся 5% — загрузчик «слетел», и его можно прошить заново программатором или другой Ардуиной. Подробнее об этом можно почитать в гугле по «как перепрошить загрузчик на Ардуино«.

 

Циклевка – трудоемкое и эффективное выравнивание

Шаг 4. Создаем печатную плату

Как только схема завершена, пришло время сделать печатную плату. Мы использовали веб-сайт JLCPCB (ссылка), чтобы сделать печатную плату. Эти ребята являются одними из лучших в производстве печатных плат в последние дни.

После завершения проектирования схемы преобразуйте ее в печатную плату и спроектируйте печатную плату на веб-сайте easyEDA (ссылка). Будьте терпеливы. Ошибка на этом шаге испортит вашу печатную плату. Проверьте несколько раз перед генерацией файла gerber. Вы также можете проверить 3d модель вашей платы здесь. Нажмите на создание файла gerber и оттуда вы можете напрямую заказать эту плату через JLCPCB. Загрузите файлы gerber, выберите правильную спецификацию, ничего не меняйте в этом разделе. Оставьте как есть. Это достаточно хорошие настройки для старта. Разместите заказ. Вы получите его через 1-2 недели.

Простейшая схема программирования (и проверки работы)

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

Список комплектующих
ОбозначениеОписание
R2Резистор 470 Ом, 0,25 Вт
C4Конденсатор, керамический, 0,1 мкФ, 50 В
LED1Светодиод, T1 3/4, желтый
нетКонвертер USB–TTL с выводом DTR

Преобразовать схему прошивки загрузчика AT328P-PU в простейшую схему программирования и проверки работоспособности довольно просто. Ниже приведены принципиальная схема и фотография макета.

  1. Удалите все шесть перемычек между Arduino Uno и схемой прошивки программатора.
  2. Подключите R2 и LED1 между землей и выводом 19 микроконтроллера AT328P-PU.
  3. Подключите выводы 1, 3, 4 и 5 от USB-TTL конвертера к AT328P-PU, как показано ниже. Вывод 2 не используется.
  4. Подключите вывод 6 через конденсатор C4 (0,1 мкФ) к выводу 1 AT328P-PU. (C4 обеспечивает, чтобы сигнал DTR от преобразователя USB-TTL выдавал кратковременный сигнал сброса, а не тот сигнал, который остается на низком логическом уровне в течение длительного периода времени.)

Простейшая схема программирования AT328P-PUМакет простейшей схемы программирования AT328P-PU

Группа ВКонтакте

Популярные публикации

Микроконтроллеры ATmega328P и ATtiny45 семейства AVR

Программируемый чип ATmega328P представлен 28-контактным микроконтроллером, входящим в семейство AVR. Микроконтроллер хорошо знаком обладателям конструктора «Ардуино», где используется в качестве основного компонента электронного набора.

Однако микроконтроллер ATmega328P способен делать куда больше, чем выжимает из этого чипа популярный электронный конструктор «Arduino». Доказательств тому масса, стоит лишь посмотреть фирменный даташит (datasheet) микроконтроллера ATmega328P.

Микроконтроллеры семейства AVR нашли широчайшее применение в практике конструирования электронных устройств различной сложности. Серия ATMega и ATiny часто выбираются для аппаратного программирования

В тесной связке с «братом по крови» выступает другая микросхема — ATtiny45. Но здесь налицо явная отличительная черта: микроконтроллер ATtiny45 имеет 8-контктный форм-фактор.

Микросхема ATtiny45 обладает многими функциями, присущими AT328P. Однако функциональность ATtiny45 несколько ограничена по причине малого числа контактов ввода-вывода.

Традиционно программирование ATmega328P и ATtiny45 осуществляется через последовательный периферийный интерфейс (SPI). Контактная шина на 3 проводника, плюс «земля». По шине данных следуют сигналы:

  1. Вход приёма данных (MOSI)
  2. Выход передачи данных (MISO)
  3. Вход синхронизации приёма(SCK)

Сигнал SCK (SCLK) генерирует ведущее устройство (программатор). Этим сигналом обеспечивается синхронная приём/передача между ведущим и ведомым устройствами. По сути, интерфейс SPI следует рассматривать «синхронной» коммуникационной шиной.

Выбор физических программаторов под AVR микроконтроллеры

Существует масса программаторов, которыми доступно программировать ATmega328P и ATtiny45. Например, профессиональная разработка «Atmel-ICE» от родной чипам компании «Atmel».

AVR Pocket Programmer: 1 — входной интерфейс USB; 2 — ISP коллектор; 3 — выходной интерфейс ISP; 4 — буферные элементы 74АС125; 5 — переключатель режима питания; 6 — основной чип ATtiny 2313

Для любителей-электронщиков этот вариант финансово обременительный. Поэтому логичным видится более простой выбор – USB программатор «AVR Pocket Programmer».

Раз в пять дешевле профессиональной разработки «Atmel», этот девайс доступно купить, к примеру, здесь. В продаже есть другие, более дешёвые программаторы (от 200 руб.), но не проверенные на практике.

На крайний случай несложно собрать программатор «AVR Pocket Programmer» своими руками. Принципиальная схема устройства построена на чипе ATtiny2313. Внешние элементы – лишь несколько резисторов, стабилитронов, светодиодов.

Принципиальная схема программатора AVR Pocket Programmer — достаточно простая, вполне доступная для сборки устройства программирования своими руками

Сигнальные линии (MICO, MOSI, SCK) желательно (но не обязательно) буферизировать. Поэтому следует дополнить схему буфером, к примеру, использовать микросхему 74AC125.

Такой буфер, кстати, применяется на фирменной сборке. Не исключается и транзисторный вариант буфера.

Для работы схемы программатора потребуется драйвер под USB. Возможно, потребуется также программный продукт Zadig, универсальный инсталлятор под Windows для установки общих драйверов USB (версия под Windows 7 и выше):

  • WinUSB
  • Libusb-Win32
  • Libusb0
  • LibusbK

Прошивка и утилиты для «AVR Pocket Programmer» находятся здесь. Драйвер программатора предпочтительно ставить в систему Windows до подключения физической схемы к ПК.

Прошиваем AVR при помощи Arduino AVP ISP Shield от DIYMORE

Шилд от DIY More, пожалуй, самый интересный образчик сегодняшнего обзора. Не секрет, что в ISP программатор можно превратить любую плату Arduino (и даже обычный микроконтроллер ATmega328). Все дело в том, что для того, чтобы стать программатором ISP, нужно иметь цифровые выходы, которые можно превратить в выходы ISP: MISO, SCK, RST, MOSI. На всех оригинальных и не очень, платах Arduino Uno (и многих других) вообще специально разведен ISP 6-пин коннектор. Через него можно запрограммировать сам микроконтроллер на плате.

DIYMORE AVR ISP shield установленный на RoboDyn Uno R3. В панельке ATmega328P.

На официальном сайте итальянцев есть даже несколько инструкций как превратить обычную плату Arduino в ISP программатор: «Как превратить Arduino в ISP программатор» и «И как программировать ATmega328 без всего остального». У меня уже есть плата с удобной колодкой для установки микросхем, соответственно я могу воспользоваться ей, для прошивки микроконтроллера (соединив кабелем ISP разъемы). Этот вариант уже рассматривался, тем более, что в сети обнаружился весьма интересный вариант в виде платы-расширения для Arduino Uno с удобной колодкой для установки микросхемы, светодиодами, динамиком ISP 6-пин выводом, местом для установки 6-пин UART вывода, место для установки 10-пин ISP вывода.

Плата устанавливается как плата расширения на Arduino Uno. Причем не обязательно это должен быть оригинал от итальянцев. Все отлично взгромоздилось на клон от Robot Dyn. А затем все так же замечательно и прошилось.

Итак, чтобы воспользоваться AVR ISP shield сперва в Arduino-носитель нужно закачать скетч ArduinoISP. Скетч входит в стандартную поставку Arduino IDE и располагается в примерах. Залить скетч можно как обычным способом, через загрузчик (по USB), так и через ISP на плате Arduino при помощи одного из вышеописанных программаторов ISP. Напомню, что если загружать скетч из Arduino IDE посредством Upload using programmer, то скетч загрузится в плату без загрузчика. И для того, чтобы им потом плату можно было прошивать по USB придется отдельно загрузить в нее загрузчик. Данная операция осуществляется в том числе и через Arduino IDE (Burn bootloader), разумеется, с использованием ISP программатора. Однако, если скомпилировать скетч через Export compiled Binary, то можно загрузить через ISP-программатор и AVRDUDESS (или просто AVRDUDE) прошивку вместе с загрузчиком.

Но, рекомендуется идти простым путем, а именно загрузкой по USB из среды Arduino IDE скетча ArduinoISP

После загрузки можно устанавливать плату, важно не воткнуть ее со смещением, и микроконтроллер сверху (выемкой в сторону ручки). В качестве программатора выбирается ArduinoISP, так же необходимо выбрать нужный тип микроконтроллера

Прошивка осуществляется через Upload using programmer (через обычную кнопку загрузки скетч закачается в носитель).

Еще одна особенность AVR ISP Shield. На ней, как и на плате Arduino Uno присутствует вывод ISP 6-пин. И если установить плату AVR ISP Shield на Arduino Uno, то задаешься вопросом — к какому микроконтроллеру дает доступ этот разъем? К тому, что установлен в колодку или к тому, что стоит в Arduino? Ответ находится очень просто — экспериментом. Разъем на AVR ISP Shield дает доступ только к микроконтроллеру, что установлен на колодке. Запрограммировать плату Arduino-носитель через шилд не выйдет. Нужно его снять и подключиться к разъему ISP самой платы Arduino. С другой стороны, AVR ISP Shield можно использовать вообще без Arduino-носителя (Uno), просто подключив 6-ти пиновый разъем к ISP-программатору (не забыв про питание). Точно так же можно подключить и USB2TTL, дабы получать вывод с Serial.

Пробрасывает ли AVR ISP Shield вывод в последовательный порт на плату носитель с установленной ArduinoISP? Нет, такой функции не предусмотрено, хотя ее ничто не мешает реализовать. Ну почти ничего. Во-первых, необходимо физически соединить выводы с колодки на AVR ISP Shield к необходимым pin-ам, а затем произвести проброску чтения с этих пинов в скетче ArduinoISP с выводом их в стандартный Serial. Текущие версии фреймворка Arduino позволяют провернуть подобную операцию. Связь будет односторонней, только с микроконтроллера на плате и в порт носителя, но тем не менее, подобный подход позволит в одном устройстве соединить сразу две функции. Что, согласитесь, удобно.

Подключение питания

Напряжение питания подается на выводы микроконтроллера VCC и GND и не должно превышать значение, указанное в технической документации. Для ATmega328P верхняя граница рекомендуемого напряжения питания составляет 5,5В, абсолютный максимум — 6В, продолжительная работа при таком напряжении может вывести микроконтроллер из строя.
Для подавления высокочастотных помех в цепи питания рекомендуется устанавливать керамический конденсатор емкостью 0.1мкФ между VCC и GND. Причем располагаться он должен как можно ближе к питающим выводам микроконтроллера для минимизации паразитной индуктивности и сопротивления подводящих проводников.

ATmega328P имеет двойное питание: выводы VCC и GND (выводы 7 и 8) используются для питания цифровых схем микроконтроллера; AVCC и GND (выводы 20 и 22) — для питания аналого-цифрового преобразователя. Даже если вы не собираетесь использовать АЦП, к нему должно быть подведено питание: соедините выводы VCC с AVCC, а цифровую землю с аналоговой. Если же вы планируете использовать АЦП, то в цепь питания следует добавить фильтр для уменьшения помех. Так в даташите рекомендуется соединить AVCC c VCC через индуктивность 10мкГн и с GND через емкость 0.1мкФ. Однако данная рекомендация не выполняется даже в платах Ардуино и вывод AVCC на них просто соединен с VCC.

Рекомендуемая схема подключения питания ATmega328P
при использовании встроенного АЦП

Перепрошивка загрузчика Arduino в ATMEGA328P через ATMEGA16U2

Довольно сложная часть нашего мероприятия по прошивке Ардуино. Вам нужно будет припаять некоторые провода. В основном нам нужно подключиться таким образом:

ICSP1 MISO2.Pin.1 -> ICSP MISO.Pin.1
ICSP1 SCK2.Pin.3 -> ICSP SCK.Pin.3
ICSP1 MOSI2.Pin.4 -> ICSP MOSI.Pin.4
JP2 PB4.Pin.1 -> ICSP RESET.Pin.5

Смотрите картинку ниже для понимания:

Подключите плату Arduino к USB-кабелю. Светодиоды RX и TX должны помигать два раза. Драйверы должны быть правильно распознаны (Jungo Connectivity -> AVRISP mkII). Запустите Atmel Studio. Зайдите в: Пуск -> Все программы -> Atmel -> Atmel Studio.

Перейдите в: Инструменты -> Программирование устройства. Выберите:

Инструмент -> AVRISP mkII
Устройство -> ATmega328P
Интерфейс -> ISP

Нажмите кнопку «Применить».

Установите частоту ISP на 16,1 кГц. Нажмите кнопку «Установить».

Программатор не будет работать, если вы установите очень низкую тактовую частоту ISP. Вы получите сообщение об ошибке: «ispProgramMem: получено состояние ошибки: получено 0x81, ожидаемое 0x00 (истекло время выборки контакта RDY / nBSY)». На английском будет звучать так: «ispProgramMem: Error status received: Got 0x81, expected 0x00 (RDY/nBSY pin sampling timed out)«. Однако максимальная скорость ISP также ограничена и не может превышать 1/4 частоты устройства.

Перейдите в «Подпись устройства» (Device signature) и нажмите кнопку «Читать» (Read). Вы должны увидеть правильную «подпись устройства»: 0x1E950F. Нажмите «Memories» и найдите hex файл загрузчика Arduino. Он находится в:

C:\Program Files\ Arduino\hardware\arduinobootloaders\optiboot\optiboot_atmega328.hex

Нажмите кнопку «Program». Если вы используете совершенно новый незапрограммированный ATMEGA328P, вы также должны запрограммировать FUSES. Перейдите в Fuses и используйте следующие значения: low_fuses = 0xff; high_fuses = 0xDE; extended_fuses = 0x05.

Вы успешно прошили 328P с загрузчиком Arduino. На следующем шаге мы вернем оригинальную прошивку 16U2.

28 комментариев на «Драйвер шагового двигателя TB6560-V2. Описание, характеристики, рекомендации по эксплуатации.»

Схема и распиновка Pro Mini

Принципиальная схема платы Ардуино изображена ниже.

Схема и распиновка Pro Mini

Пинов у микроконтроллера 14, каждый из которых может настраиваться как вход или выход. Выводы помечены цифровым номером, аналоговые имеют маркировку А. Рабочее напряжение – 3,3 В или 5 В.

Назначение пинов:

  • Последовательная шина – 0 и 1 (RX, TX). Предназначены для приема и передачи данных. 
  • Внешнее прерывание – 2 и 3. Могут использоваться для вызова прерывания.
  • ШИМ выводы – 3, 5, 6, 9, 10, 11. 
  • SPI – 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). 
  • Светодиодный индикатор – 13. 

6 аналоговых контактов имеют разрешение 10 бит. Некоторые выводы имеют дополнительный функционал:

I2C – A4 (SDA), A5 (SCL).  

Также плата оснащена дополнительным выводом Reset. При низком уровне перезагружает микроконтроллер.  

Прошивка AVRISP MKII в Arduino ATmega16U2

Мы готовы перепрошить прошивку в 16U2.

Скачайте hex файл AVRISP MKII отсюда.  Отключите Arduino от USB-кабеля и питания. Замкните контакты 5-6 ICSP1. Подключите Arduino к USB. Разомкните выводы ICSP1 5-6.

Запустите программное обеспечение FLIP: Пуск -> Все программы -> Flip. Зайдите в: Настройки -> Связь -> USB. Нажмите «Открыть».

Перейдите в: Файл -> Загрузить файл HEX. Далее выберите LUFA-BOTH-AVRISP-MKII.hex и нажмите «Выполнить».

ATMEGA16U2 теперь AVRISP MKII и работает в режиме Atmel Studio. Arduino AVRISP MKII может работать в двух режимах: Atmel Studio или Avrdude. Ниже я буду говорить только о режиме Atmel Studio, так как у меня было много проблем с режимом Avrdude.

Заключение

В этой статье мы рассмотрели различные аспекты загрузки скетчей в Arduino Uno и Nano. Прошивка плат на базе микроконтроллеров ATmega328 и ATmega256, как правило, не сложна и может выполняться одним нажатием кнопки в Arduino IDE. За эту простоту мы должны благодарить встроенную программу-загрузчик, выполняющую за нас все основные действия на низком уровне.

Еще одним вариантом перепрошивки контроллера является использование другой платы адуино или специальных программаторов, использующих микросхемы CP2102 CH340, FTDI и другие. Этот метод требует дополнительных усилий и затрат, но позволяет гибко изменять параметры прошивки. Какой из двух вариантов выбрать – решать вам. Для новичков, безусловно, первым шагом станет использование Arduino IDE, благо, ее создатели сделали все, чтобы упростить этот процесс.

Выводы

Благодаря своей невыносимой популярности, прошить AVR от Atmel можно тысячью и одним способом. И приведенные выше «адаптеры», и программные продукты — лишь маленькая часть всего многообразия систем и средств по прошивке. В обзор не попал интересный ISP-программатор USBasp. Хотя его с успехом заменяет TinyISP. Однако, в последних ревизиях, от 2011 года в USBasp вроде бы как была задекламирована функция совмещения в одном устройстве и ISP-программатора, и Serial интерфейса. На некоторых картинках в сети даже попадаются подписи с выведенными Rx/Tx на десятипиновую колодку, но похоже, что кроме железной поддержки требуется еще и программная реализация. А так хотелось бы иметь в одной устройстве программатор вместе с последовательным интерфейсом. Хотя, некоторые производители, например, Pololu выпускают подобные устройства, да и программатор на FTDI-чипе не исключение, хотя его и не удалось запустить под Windows.

За время испытания, у меня не вышло разобраться с проблемой с не отпусканием «кнопки» сброса при программировании через загрузчик и USB2TTL адаптер. Причины сего так и остались покрытыми мраком. Приходилось вручную отключать пин DTR, и только после этого происходила загрузка в штатном режиме.

Прошиваем AVR при помощи «красного» модуля на CP2102 и с 5 выводами

В наименовании CP2102 модуль USB2TTL скорее не название модуля, а название чипа, который и производит преобразование из USB в TTL и обратно. Сам чип изготавливается Silicon Labs. На сайте производителя можно ознакомиться со спецификацией на модуль или же скачать драйвера (у меня на Win10 драйвера оказались уже в наличии, чип определяется как Silicon Labs CP210x USB to UART Bridge и занимает доступный COM-порт).

Несмотря на то, что сам чип оснащен множеством выходов, а о них ниже, изготовитель модуля распаял только 2 из них, всего же на плате со стороны UART-интерфейса располагается 5 выходов.

Типы вводов/выводов UART. Out выход с чипа в UART, In вход с UART в чип USB2TTL.

Согласно спецификации чипа, для успешной работы необходимо подключить только TXD и RXD, собственно, как раз асинхронные (последовательные, где данные передаются в виде последовательности по одному проводнику) шины по обмену данными. Одна шина для приема, одна для передачи. Помимо TXD и RXD на плате модуля присутствует вывод «земля», питание 5V и питание 3.3V со встроенного стабилизатора.

Красный модуль на чипе CP2102 с пятью выводами.

Для чего может быть использован этот модуль? Во-первых, для подачи питания от USB на плату для прошивки «голенького» микроконтроллера. Напомню, что для прошивки программатором через ISP интерфейс необходимо наличие внешнего питания на микроконтроллере. Так же можно использовать его для обмена между ПК и микроконтроллером через последовательный порт. Например, можно к микроконтроллеру подключить терминал и передать команду в микроконтроллер или же просто посмотреть диагностический вывод. Терминал можно использовать как встроенный в Arduino IDE, а можно взять и отдельный, к примеру PuTTY.

При установленном загрузчике в микроконтроллер его можно прошить и из-под Arduino IDE, однако, ввиду того что на модуле не разведен до отдельного вывода сигнал DTR, то нужно наловчиться нажимать кнопку сброса на микроконтроллере (точнее на плате под него). При достаточном умении можно так приноровиться, что операция по прошивке будет происходить с первого раза.

Как подключать выходы? Поскольку ATmega328 работает в диапазоне напряжений от 1.8 и до 5.5 В, то при работе от ПК я подключаю выход 5В, он идет без стабилизатора на плате (стабилизатор на 3.3В на модуле слабенький). Так же подключаю «землю» и выходы TXD/RXD. И с последними есть небольшая хитрость. Их нужно подключать перекрестно. Выход платы TXD подключаем на вход RXD микроконтроллера. А вход платы RXD подключаем к выходу TXD микроконтроллера. Не забываем, что xXD входы/выходы сугубо однонаправленные.

Прошиваем AVR при помощи FabISP мимикрирующего под USBTiny44/USBTiny85 с 6 выводами ISP

Модуль FabISP является детищем FabLab MIT (того самого, Массачусетского Технологического). По сути FabLab — мастерская при университетах, где студенты могут сваять что-то своими руками. Вот один из студентов и навяаял внутрисхемный программатор для AVR на основе USBTinyIPS. Ознакомиться с его творчеством, равно как и скачать драйвера под программатор можно на страничке отчета студента по проделанной работе. Страничка уже находится в архиве, поэтому не ясно как долго она просуществует. Но FabISP используется в учебных курсах и видимо не скоро совсем уйдет с арены.

FabISP в исполнении китайских товарищей.

Интересная особенность. Через 6-ти пиновый кабель, который, кстати не поставляется вместе с модулем, FabISP может питать и микроконтроллер. В таком случае не требуется дополнительное питание, как у AVRISP mkii. Так же хочу заметить, что оригинальный FabISP требует предварительной прошивки и программатора, по типу того же AVRIPS. Но с Китая модули (GY ARDUINO ISP V2) приходят уже прошитыми, что существенно облегчает задачу.

Прошивка ATmega328P посредством AVRDUDESS через FabLAB USBTiny

Я не стал устанавливать драйвера со странички студента, а установил их от Lady Ada (изобретателя USBTiny). После установки драйверов программатор определился как Atmel USB Devices – USBtiny. Для того, чтобы программатором можно было пользоваться, необходимо распаять, если она у вас не распаяна, перемычку SJFAB (в некоторых нотациях это перемычка обзывается как SJ1). Перемычка используется для возможности программирования самого программатора. Более того на плате присутствует и вторая перемычка SJ2 (или же SJVCC). Она отвечает за подачу питания на микроконтроллер с программатора. Если ее распаять, то для микроконтроллера потребуется внешнее питание. Ознакомиться со схемой можно все с того же сайта MIT.

При прошивке через FabISP необходимо обратить внимание, что поскольку программатор использует порт USB, то в AVRDUDESS необходимо так же выбрать порт USB. Никакого моста на последовательные порты не создается

При прошивке в Arduino IDE в качестве программатора выбираем USBTiny. Порт выбирать не требуется. В среде отсутствует возможность выбрать USB, поэтому опция просто игнорируется, AVR находит программатор самостоятельно.

Соответственно, при помощи FabISP можно прошивать внутрисхемно, в том числе и загрузчик, как при помощи AVRDUDE, так и напрямую из Arduino IDE (порт можно не указывать, загружаем через меню Sketch – Upload Using Programmer или Burn bootloader, в качестве программатора выбираем USBtinyISP).

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации