Как прошить микроконтроллер avr?

ISP программатор

USBasp

Дешёвые ISP программаторы также есть в ассортименте у китайцев, рекомендую брать USBasp как самый распространенный. Поискать на алиэкспресс, мне нравится версия в корпусе. USBasp имеет не очень удобный выход 10-пин на шлейфе, поэтому рекомендуется купить также переходник 10-пин на 6-пин, который позволяет сразу подключаться к ISP header’у, который есть на большинстве плат Arduino

Внимание! Очень часто встречается брак в виде непропая контактов, поэтому во избежание проблем рекомендуется пропаять переходник и отмыть флюс (зубная щётка + бензин калоша)

Быстрый старт:

  • Подключить usbasp к компьютеру
  • Скачать и установить драйвера на usbasp (скачать с моего сайта, скачать с Яндекс диска, ещё есть тут и тут)
  • Открыть диспетчер устройств и убедиться, что программатор определился системой
  • Открыть Arduino IDE
  • Выбрать usbasp в Инструменты > Программатор

Решение проблем

Решение большинства проблем с загрузкой через программатор (независимо от того, что написано в логе ошибки):

  • Вытащить и обратно вставить usbasp в usb порт
  • Вставить в другой usb порт
  • Переустановить драйвер на usbasp
  • Проверить качество соединения USBasp с МК
  • Перепаять переходник и отмыть флюс

Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):

USBasp: на плате есть перемычка JP3, которая включает режим низкой скорости загрузки. В новых версиях прошивки для USBasp скорость выбирается автоматически, но китайцы продают старую версию. Как прошить новую – ищите в интернете.

Основные ошибки в логе Arduino IDE

Причина – компьютер не видит USB ASP

  • Проверить и сменить USB порт
  • Попытаться переустановить драйвер
  • Проверить пайку USB разъема на плате программатора
  • Проверить наличие и целостность элементов вблизи usb разъема программатора, кварцевый резонатор
  • Возможно программатор криво прошит – при возможности попытаться перепрошить
  • Возможно микроконтроллер на плате программатора – брак или же мертв, попытаться заменить и прошить

Причина – usbasp не видит подключаемый микроконтроллер

  • Проверить правильность и целостность соединения с МК
  • Попытаться снизить частоту прошивки, джампером или же указав более низкую скорость в среде программирования
  • Проверить пайку разъема 10 pin и переходника 10 pin – 6 pin
  • Возможно прошиваемый микроконтроллер попался с браком, или же мертв.

Arduino as ISP

Почти любая другая плата Arduino может стать ISP программатором, для этого нужно просто загрузить в неё скетч ArduinoISP:

  • Открыть скетч Файл > Примеры > 11. ArduinoISP > ArduinoISP
  • Всё! Ваша Arduino теперь стала ISP программатором
  • Подключаем к ней другую Arduino или голый чип по схеме ниже
  • Выбираем Arduino as ISP в Инструменты > Программатор
  • И можем писать загрузчики, фьюзы или загружать прошивку напрямую во Flash

ISP программатор подключается к четырем пинам микроконтроллера, не считая питания: один из пинов передает сброс, остальные – для передачи данных. Чтобы плата-программатор не сбрасывалась при загрузке, на неё нужно:

  • Либо поставить поставить конденсатор ёмкостью ~10 мкФ между RST и GND (рекомендуется)
  • Либо просто закоротить пины RST и 5V проводом

По использованию других плат Arduino в качестве программатора читай на официальном сайте.

Решение проблем

Для прошивки микроконтроллера, тактирующегося низкой частотой (менее 1 МГц внутренний клок):

Arduino ISP: нужно изменить частоту загрузки прошивки в скетче Arduino ISP и снова прошить его в ардуино-программатор (см. строку в скетче 45 и ниже);

Метод определения частоты генератора

Сравнение частот калибровочной синхронизации и внутреннего RC-генератора выполняется с помощью 8-разрядного таймера-счетчика 0 (TC0). 8-разрядный таймер используется в связи с тем, что он присутствует во всех микроконтроллерах с регулируемыми RC-генераторами. Идея заключается в определении отсчета таймера за 40 тактов калибровочной синхронизации и сравнении полученного значения с предустановленными порогами. Частота калибровочной синхронизации в существующей реализации задается в файле-описании интерфейса. Метод определения частоты генератора показан в виде блок-схемы на рисунке 3.

Рисунок 3 – Блок-схема алгоритма определения соотношения между частотами калибровочной синхронизации и внутреннего генератора

В целях охвата полного диапазона частот генератора от 1 до 9,6 МГц выполняется проверка флага переполнения ТС0 (OVF) для увеличения разрядности таймера с 8 до 16. Флаг OVF проверяется каждый полупериод калибровочной синхронизации, чем гарантируется детекция всех переполнений таймера. Относительно 16-разрядного разрешения реализованного таймера следует заметить, что наихудший случай по переполнению таймера возникает при использовании генератора на 9,6МГц и загрузке в регистр OSCCAL значения 0xFF. В этом случае, генератор работает с вдвое большей частотой, а таймер дойдет до значения 23541, что с запасом охватывает 16-разрядный таймер.

Аналогичным образом необходимо рассмотреть случай минимальной частоты. Минимально возможная частота генерируется при записи в OSCCAL значения 0x00. В этом случае результирующая частота вдвое меньше от номинальной. Поскольку состояние флага OVF проверяется каждый полупериод, то потенциально потребуется не более 7 тактов ЦПУ на манипуляцию с флагом OVF и детекцию следующего фронта синхронизации (при заданной частоте 1 МГц). Данное временное ограничение выполняется, если флаг OVF не установлен, в случае же его установки потребуется 8 тактов. Это может привести к небольшой ошибке в детекции синхронизации, но не повлияет на конечный результат: генератор будет корректно определен как слишком медленный.

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

C#

Кому подходит: тем, кто хочет в VR и модные метавселенные.

Средняя зарплата на начало 2022 года: тоже 158 тысяч (было 128 тысяч в 2021 году).

Почитать: 

  • Для чего нужен язык C#
  • Кто такая Unity и почему она всем нравится

Если вы слышали про метавселенные, виар и дополненную реальность, то C# — один из языков, на котором можно делать все эти штуки. Смысл в том, что в большинстве случаев там нужна 3D-графика, для которой можно использовать движок Unity. А C# как раз отлично дружит с Unity и позволяет программировать и управлять логикой внутри метавселенных и дополненной реальностью. 

Аналитика: Unity — самый распространённый сегодня движок для игр, графики и метавселенных, но, во-первых, не единственный, а во-вторых — не опенсорсный. С компанией Unity Technologies может произойти что угодно — от покупки и вливания в какую-нибудь большую ИТ-экосистему до банкротства и ухода с рынка. И когда на её место придёт кто-то другой, там может быть уже не C#.

Справедливости ради, переход с C# на другие языки тоже не создаст вам проблем. А вот принципы конструирования 3D-миров вам в любом случае пригодятся. 

На Юнити и C# можно делать такие же красивые виртуальные миры, как в Assassin’s Creed.

Лучшие программаторы

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

AVR USBASP

Модель AVR USBASP относится к универсальным USB программаторам, поддерживает десяти штырьковые флэш-микроконтроллеры с возможностью установить дополнительно шесть штырьковых адаптеров. Прибор имеет два варианта питания (5 и 3,3 вольта), которые осуществляются через специальную перемычку. Несмотря на преимущества устройства, стоимость его относится к доступным.

AVR USBASP
Достоинства:

  • цена;
  • наличие двух типов питания;
  • габариты;
  • подходит для работы с распространенными видами микросхем.

Недостатки:

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

Turbosky PMT-1

Данная модель представлена в виде кабеля, с одной стороны которого расположена флешка, являющаяся отладчиком, с помощью нее и происходит настройка радиостанции, таких как Walkie-Talkie. Аппарат позволяет выбрать и установить назначение клавишам радиостанций те функции, которые необходимы, поставить шумоподавление нужного уровня, выбрать звук вызова и подключения каналов. Отладчик совмещается не только с товарами компании Turbosky, но и синхронизируется с такими моделями станции, у которых кодировка осуществляется при помощи CTCSS, DCS кодов.

Turbosky PMT-1
Достоинства:

  • размеры от очень компактный;
  • идеальный вариант для настройки радиостанции;
  • есть поддержка для пользователей;
  • качественный.

Недостатки:

узконаправленная специализация.

MiniPro TL866

Высокоскоростной китайский программатор MiniPro TL866 подходит для программирования всех современных систем Windows: 7, 8, 10, 32 и 64 бита. При помощи данной модели возможно провести SRAM тест, также прибор поддерживает такие чипы как NAND Flash объемом до 8 Gbits. Помимо всего, MiniPro TL866 оснащен рядом дополнительных функции таких как, автоматический поиск плохих пин-контактов, вывод порядкового номера и проведение тестов алгоритмов. Потребление энергии микросхемами минимально. При помощи DLL библиотек, программисты способны создавать всевозможные алгоритмы, даже могут устанавливать уникальные коды, позволяющие защищать авторские права на прибор.

MiniPro TL866
Достоинства:

  • высокая скорость программирования;
  • функциональные возможности;
  • комплектация;
  • качество.

Недостатки:

цена.

USB EZP2019

Еще одна модель USB программатора, выпускаемая на территории Китая, отличающаяся высокой скоростью работы. Корпус прибора оснащен световыми индикаторами, которые показывают питание и процесс программирования. Устройство относится к универсальным и подходит для ремонта бытовой техники и промышленного оборудования. После включения прибор дает возможность автоматически проверять соответствует ли МК нормам безопасности, а также позволяет загружать нужное программное обеспечение. С ограничением, но USB EZP2019 позволяет проверить целостность BIOS материнской платы у персонального компьютера. Прибор работает со скоростью до 12 м/с, таким образом период установки драйверов значительно ускоряется.

USB EZP2019
Достоинства:

  • габариты прибора;
  • обширная сфера использования;
  • располагается в корпусе;
  • высокая скорость работы.

Недостатки:

не выявлены.

RT809F

Модель RT809F разработана для работы с электронно-вычислительной и периферийной техникой, а также прибор поддерживает электрически стираемое перепрограммируемое ПЗУ I2C EEPROM Memory и оперативное запоминающее устройство (ОЗУ) DDR1/DDR2/DDR3. Помимо этого RT809F совместим с МК MCU RTD2120, 93 MircroWire, Micom

WINBOND расширяет способности аппарата тем самым привлекая внимание лиц занимающихся ремонтов различной техники (радио, телемастеров и т.д.) независимо от уровня их квалификации. Рассматривая параметры модели, можно сказать, что она относится к самым выгодным, так как в ней совмещены невысокая стоимость и широкая совместимость с микроконтроллерами

RT809F
Достоинства:

  • универсальность применения;
  • цена в соотношении с его возможностями приемлемая;
  • возможность подключения через USB, VGA, SOP-адаптер и интернет;
  • хорошая комплектация.

Недостатки:

не замечены.

Ставим “ядро”

Для того, чтобы работать с Attiny через Arduino IDE, нам нужно установить так называемое ядро, или как оно называется в самой IDE – плату. Для ATmega328 у нас уже есть стандартное ядро, например плата Arduino NANO. Но тут есть нюанс: внутренние настройки “платы” NANO рассчитаны на работу с загрузчиком (bootloader) и с внешним тактированием 16  Мгц, то есть лучше не рисковать и установить ядро, которое поддерживает работу без загрузчика и с возможностью выбора частоты, чтобы иметь полный контроль над платой. Могу посоветовать вот эти:

  • GyverCore – ядро для ATmega328, которое разработали мы с коллегой. Лёгкое и быстрое, возможность работы без загрузчика и широкий выбор вариантов тактирования. Ссылка для менеджера плат: https://alexgyver.github.io/package_GyverCore_index.json
  • MiniCore – ядро для поддержки и расширенной настройки МК ATmega328, ATmega168, ATmega88, ATmega48 и ATmega8. Ссылка для менеджера плат: https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
  • ATTinyCore – ядро для поддержки и расширенной настройки МК ATtiny 441/841, 44/84, 45/85, 461/861, 48/88, 828, 1634, 87, 167. Ссылка для менеджера плат: http://drazzy.com/package_drazzy.com_index.json
  • MicroCore – ядро для поддержки и расширенной настройки МК ATtiny13, ATtiny13A и ATtiny13V. Ссылка для менеджера плат: https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
  • megaTinyCore – ядро для поддержки и расширенной настройки МК ATtiny 3217, 1617, 817, 417, 3216, 1616, 816, 416, 1614, 814, 414, 214, 412, 212, 1607, 807, 1606, 806, 406, 1604, 804, 404, 204, 402, 202. Новые модели шьются по UPDI, по этой теме читайте отличную статью на русском языке. Можно сделать программатор из обычной Ардуины – читай тут. Данное ядро можно установить через менеджер плат, ищите по названию Arduino megaAVR board package, никаких ссылок вставлять не нужно.
  • MightyCore – ядро для поддержки и расширенной настройки МК ATmega8535, ATmega16, ATmega32, ATmega164, ATmega324, ATmega644 и ATmega1284. Ссылка для менеджера плат: https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json
  • MegaCore – ядро для поддержки и расширенной настройки МК ATmega64, ATmega128, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90CAN32, AT90CAN64 и AT90CAN128. Ссылка для менеджера плат: https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json

Как установить ядро: идём в Файл/Настройки и вставляем ссылку в окно дополнительных ссылок для менеджера плат   Далее идём в Инструменты/Плата/Менеджер плат… и находим нужное ядро. Устанавливаем   После этого в списке плат появится новое семейство плат/МК на выбор. Я буду работать с ATtiny85   Нас интересует меню Clock – тактирование. ATtiny85 интересна тем, что может тактироваться от внутреннего источника на 8 МГц, но также может его “умножить” на 2 и получится 16 МГц, этот вариант называется 16 MHz (PLL). Это очень круто, потому что голый чип будет работать с почти максимальной скоростью, что делает его ничуть не хуже той же Arduino Nano. Выбираем программатор из списка (я буду прошивать при помощи USB ASP). Однократно выполним Инструменты/Записать загрузчик, чтобы применить настройки тактирования:   Про остальные менюшки и варианты можно догадаться из их названия, или почтить подробное описание на GitHub по ссылкам выше.

Avrdudeprog

Avrdudeprog – утилита от русского программиста, являющаяся удобной оболочкой для avrdudue. Скачать AVRDUDE_PROG можно с официального сайта (прямая ссылка на загрузку, на всякий случай зеркало на моём ЯД и FTP этого сайта). В рамках этого урока, программа умеет следующее:

  • Чтение/запись/очистка flash памяти
  • Чтение/запись/очистка eeprom памяти
  • Полная очистка чипа
  • Калькулятор фьюзов и локбитов (чтение/запись)

Более подробный обзор на avrdudeprog можно посмотреть здесь. Давайте посмотрим на калькулятор фьюзов. Выбираем свой микроконтроллер и программатор (можно добавить другие модели микроконтроллеров и программаторов, читай тут). Переходим во вкладку Fuses, нажимаем прочитать. При успешном чтении увидим текущий набор настроек своего чипа. Можно их поменять и загрузить

Важно! Галку инверсные биты не трогаем! Лок-биты и отключение RST заблокирует микроконтроллер, не трогайте их, если такой цели нет! Можно загружать прошивку или загрузчик из .hex файла, указав путь к ней на первой вкладке в окне Flash. Очень удобная утилита для низкоуровневой работы с МК

Программатор-отладчик AVR-JTAGICE mkII

Официальный программатор для микроконтроллеров фирмы Atmel семейства AVR, поддерживающих интерфейс для отладки и программирования JTAG.

Необходим для отладки AVR микроконтроллеров в среде AVR Studio 5.

Как оказалось, имеет неожиданно большой размер.

Думаю от такого программатора стоит отказаться в пользу AVR-JTAGICE3 — из-за гораздо меньших размеров. У него примерно та же цена и при этом третий JTAGICE имеет больше возможностей.

Характеристики программатора

  • Полная поддержка JTAG программирования, поддерживает также интерфейсы ISP и DebugWire.
  • Подключение к PC осуществляется с помощью USB 1.1 или RS-232 интерфейса
  • Точки останова по адресам памяти программ и памяти данных
  • Все операции и точки останова выполняются в режиме реального времени
  • Напряжение подаваемое в отлаживаемую схему 1.8-5.5 В
  • Напряжение внешнего источника питания 9-12В, так же отладчик может питаться от USB порта

Проект на голом МК

Зачем делать проект на своей плате и голом микроконтроллере?

Конечно же размер, своя плата получится компактнее в большинстве случаев.
Энергопотребление. Ни для кого не секрет, что всякие удобные штуки на плате ардуино потребляют огромный по меркам энергосбережения ток, и для автономного устройства лучше взять голый камушек.
Работая с голым камнем мы можем выбрать микроконтроллер под свои задачи. Например для мелкого проекта необязательно брать 328 мегу, если с задачей справится аттини13, которая стоит 20 рублей.
Возможная экономия. Ардуино нано стоит условно 170 рублей без доставки. Голая 328 мега на том же алиэкспресс – 100 рублей. Если брать десяток. В дорогущем российском чип и дип – 190 рублей. То есть если очень приспичит – можно и тут купить без особых потерь, потому что оригинальная нано стоит 3 тысячи рублей в том же ЧИДе.
Удобство разводки платы. Микросхема в корпусе под поверхностный монтаж находится на одном слое и не мешает дорожкам на другом слое.
Удобство монтажа. Даже если делать свою плату прототип лутом, то припаять на неё чип в 100 раз удобнее и быстрее, чем сверлить три десятка отверстий под ардуину, а потом их запаивать.
Мелкосерийное производство готовых или почти готовых плат, для себя если нужно несколько или на продажу

На том же jlcpcb можно заказать изготовление плат с распайкой внимание smd компонентов. То есть ардуину вам никто не припаяет, а вот ту же 328 мегу припаяют за 100 рублей, тиньку 13ю – за 35 рублей, а чем больше партия – тем дешевле

К этому вопросу мы вернёмся ближе к концу этого урока.

Итак, я на личном опыте убедился, что МК способен работать вообще без какой-либо обвязки. Это был проект “Читалка файлов с SD карты” на базе ATmega328. Проект достаточно непростой: МК читал текстовые файлы с карты памяти microSD и выводил их на OLED дисплей. Никаких лишних компонентов на плате нет, МК тактируется от внутренних 8 МГц и всё работает отлично. Даже карта памяти подключена напрямую к МК =) Но в надёжных устройствах делать так не рекомендуется! Минимальная обвязка для МК и полезные советы:

Соединять все ноги питания (GND, VCC) максимально толстыми и короткими дорожками между собой:

  • GND обычно делают полигоном на всю поверхность платы
  • Я где то читал, что VCC рекомендуется соединять дорожками “внутри шелкографии”, то есть под МК. Оно и логично, так они получатся короче всего

Поставить керамический конденсатор ~100 нФ/nF (0.1 мкФ/uF) по питанию МК: между VCC и GND для сглаживания микропульсаций напряжения

  • Располагать максимально близко к пинам питания МК
  • Также параллельно ему можно поставить электролит (алюминиевый цилиндр) или танталовый конденсатор (компактный SMD чип) на 10-47 мкФ/uF, для сглаживания более серьёзных пульсаций напряжения. Особенно если МК питается от одного источника с другими потребителями, или используется некачественный источник питания.

Если нужна кнопка сброса (reset), подключаем её к RST и GND, т.е. кнопка должна подать на RST низкий сигнал. Внутри МК уже присутствует подтягивающий резистор на пин RST

При наличии кнопки и дорожки от пина RST рекомендуется подтягивать пин к VCC резистором на 10 кОм, потому что внутренний подтягивающий резистор имеет довольно большое сопротивление и наведённые на дорожку помехи (она выступает в роли антенны) могут привести к сбросу МК

Если нужен внешний тактовый генератор – подключаем его между пинами XTAL1 и XTAL2 (см. распиновку своего МК), и оба пина подключаем к GND через керамические конденсаторы на 18-22 pF/пФ. Более точный номинал конденсатора можно узнать из даташита на генератор, но в 99% это 22 пФ

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

ВНИМАНИЕ! Если фьюзы настроены на внешнее тактирование и внешний генератор не подключен к пинам – вы не сможете прошить МК даже при помощи ISP программатора!

Если нужна удобная прошивка по ISP – выводим штекер для подключения. Вот тут можно открыть мой модуль такого штекера для EasyEDA

Если нужна прошивка по UART – выводим RX, TX, GND. Для автоматического сброса МК перед началом прошивки у USB-TTL преобразователя должен быть выведен пин DTR. Его подключаем к RST через конденсатор на 0.1 мкФ. Также подключаем, VCC если нужно запитать МК от UART преобразователя. Прошивать можно любым USB-TTL преобразователем с выходом DTR. В показанной схеме подключение к преобразователю будет RX->TX, TX->RX!

Я думаю теперь вы готовы к созданию проекта на своей плате!

Общие сведения

CH341A Programment, это программатор начального уровня, изготовлена на черном стеклотекстолите (существует вариант на зеленом текстолите) с серебристой окантовкой. В комплект входит зеленая печатная плата и два штыревых разъема 1х4 (шаг 2.54 мм), данный комплект, позволит прошивать микросхемы SMD исполнении, очень удобно, если необходимо прошить пару микросхем, но если планируете использовать программатор постоянно, советую приобрести, так называемые ZIF переходники на 150 mil и 200 mil, позволяющие устанавливать SMD микросхемы без пайки.

На верхней части программатора, установлена микросхема CH341А, рядом располагается кварцевый резонатор на 12 МГц, стабилизатор напряжения AMS1117-3.3 который выдает 3.3В, а так же электрическая обвязка всех этих компонентов (резисторы, конденсатора). Для программирования микросхем, установлена 16 контактная DIP панель с нулевым усилием с маркировкой TFXTDOL. С двух стороны DIP панели, располагается две группы дополнительных контактов, назначение каждого можно посмотреть на обратной стороне платы.

На другой стороне платы, дополнительно добавлено место для установки SMD микросхем (150 mil и 200 mil) и нарисована шёлкография.

Назначение группы контактов 1: ► 1,2,3 – выбор режима работы (1-2 режим Paralell (внутренней) и 2-3 режим Serial (внешней) ► TX – передаваемые данные ► RX – принимаемые данные ► GND – питание земля ► 5V – питание +5 В

Назначение группы контактов 2: ► CLK – линия тактирования (Serial CLock) ► CS – режим работы ► MOSI – прием данных ► MISO – передача данных ► GND – питание земля ► 3.3V – питание +3.3 В ► 5V – питание +5 В

USB-TTL (UART)

Этот способ реализован прямо на платах Arduino при помощи USB-TTL (USB-UART) преобразователя, именно поэтому мы можем подключить плату к компьютеру и загрузить код. USB-TTL позволяет только загрузку данных во flash, остальные возможности (как у ISP программатора) ему недоступны. В то же время он ограничен только возможностями загрузчика, но в этом уроке мы рассматриваем только стандартные. Также USB-TTL мост позволяет микроконтроллеру общаться с компьютером по последовательному соединению (тот самый Serial и монитор com порта). Есть платы без бортового USB-TTL, например Arduino Pro Mini. Для работы с ними нужно купить внешний USB-TTL преобразователь. Также загрузка прошивки через UART возможна и в “голый” микроконтроллер при условии наличия там загрузчика, который запишет принятый код во flash. Про запись загрузчика мы поговорим ниже. UART “загружатор” подключается к пинам RX и TX Ардуино (или микроконтроллера), RX->TX и TX->RX, также обязательно подключается земля GND. Если у прошиваемой платы нет своего питания, то подключается и питание. Загрузчик отрабатывает при запуске МК, поэтому непосредственно перед загрузкой прошивки МК должен быть сброшен (перезагружен), и для этого на платах USB-UART есть вывод DTR (Data Terminal Ready), который подключается к пину RST Reset и собственно выполняет сброс перед перед загрузкой прошивки. На платах Pro Mini есть отдельный пин DTR.

USB-TTL Arduino
DTR DTR
RX TX
TX RX
GND GND
VCC/5V/3.3V VCC

  Китайцы выпускают USB-TTL модули в широком ассортименте, но в целом они все одинаковые по своей сути. Ссылка на результат поиска на aliexpress, и ссылка на все USB-TTL в моём любимом магазине WAVGAT. Что использую я? В основном платку на CP2102. Перед заказом модуля обязательно убедитесь в том, что у него есть выход DTR, иначе этот модуль можно будет использовать только для “общения” с контроллером через COM порт.   Для работы с таким преобразователем нужно установить драйвер для чипа, на базе которого собран модуль, это может быть CP2102, CH340/341, FT232, PL2303 и другие. Прошивка загружается как обычно: выбираем порт, на котором сидит преобразователь, версию загрузчика и жмём загрузить, всё! Важный момент: на некоторых китайских версиях плат Arduino Pro Mini не распаян пин DTR, т.е. он не идёт на RST и автоматический сброс перед загрузкой прошивки не выполняется. В этом случае сброс нужно производить вручную, кнопкой RST, непосредственно перед загрузкой прошивки… Загрузка прошивки посредством загрузчика (bootloader) возможна с любого UART устройства, даже через Bluetooth. Но об этом мы поговорим в отдельном уроке.

Знакомство с Arduino

Торжественно открываю новый блог на Хабре, посвящённый Arduino! Блог об универсальном opensource-микроконтроллере Arduino, который будет интересен всем любителям микроэлектроники, самодельных гаджетов и всем, кто не боится взять в руки паяльник.

Arduino представляет собой линейку электронных блоков-плат, которые можно подключать к компьютеру по USB, а в качестве периферии — любые устройства от светодиодов до механизмов радиуоправляемых моделей и роботов. Программы для него пишутся на простом и интуитивно понятном си-подобном языке Wiring (c возможностью подключения сторонних библиотек на C/C++, например, для управления LCD-дисплеями или двигателями), компилируются и загружаются в устройство одной кнопкой, после чего вы тут же получаете работающий автономный гаджет. Никакого ассемблера, никаких лишних проводов и дорогущих деталей и программаторов — чистое творчество, включай и работай!

Применение

После короткого рассказа друзьям и знакомым про Arduino («это типа электронного конструктора, микро-ЭВМ, в который можно загрузить любую программу и получить любое другое устройство») самый часто задаваемый вопрос «А зачем это всё?» или «Какая мне от этого выгода?» Скучные люди, не правда ли? Неужели среди ваших знакомых нет ни одного радиолюбителя, а может вы и сами радиолюбитель? Применение Arduino очень простое — не забавы ради, а развития мозга для. Интересно же линуксоидам ковыряться в коде ядра? Какая от этого польза? Почему бы вам не заняться «железным» (в противовес «софтовому») творчеством? Вот прямо сейчас рядом со мной сидит коллега-дизайнер и разбирается… с нейронными сетями. В общем что говорить, забыт дух технического творчества, забыты радиокружки и авиамодельные клубы. Все только сидят у своих компьютеров и сделать ничего путного в железе, кроме как воткнуть вилку в розетку, не могут Соберите свой веб-сервер, цветомузыкальную установку или прикольного робота! Сообщество любителей Arduino уже знает об успешных примерах: GPS-трекер с записью на SD-карту, простой аудиоплеер, Twitter-дисплей, электронные игры с дисплеем и тачскрином… Попробуйте купить радиодеталей и сделать что-то своё! Есть даже готовый набор для создания четырёхъядерного Arduino-кластера.

Технические характеристики

Arduino Diecimila представляет собой небольшую электронную плату (далее просто плата) ядром которой является микроконтроллер ATmega168. На плате есть: 14 цифровых входов/выходов, 6 из которых могут работать в режиме ШИМ (PWM) (а следовательно управлять аналоговыми устройствами вроде двигателей и передавать двоичные данные), 6 аналоговых входов (исходной информацией служат не логические 0/1, а значение напряжения), тактовый генератор на 16 МГц, разъёмы питания и USB, ICSP-порт (что-то вроде последовательного интерфейса для цифровых устройств), несколько контрольных светодиодов и кнопка сброса. Этого вполне достаточно, чтобы подключить плату к USB-порту компьютера, установить нужный софт и начать программировать.

  • Микроконтроллер: ATmega168
  • Рабочее напряжение: 5 В
  • Входное напряжение (рекомендуемое): 7-12 В
  • Входное напряжение (пределы): 6-20 В
  • Цифровые порты ввода/вывода: 14 портов (из них 6 с ШИМ-сигналом)
  • Аналоговые порты ввода: 6 портов
  • Ток для портов: 40 мА
  • Ток для 3.3В источника: 50 мА
  • ППЗУ (Flash Memory): 16 KB (из них 2 Кб используются загрузчиком)
  • ОЗУ (SRAM): 1 Кб
  • ПЗУ (EEPROM): 512 байт
  • Тактовая частота: 16 МГц

Питание Питание платы осуществляется двумя способами: по кабелю USB (при этом никаких других ухищрений делать не нужно, используется в процессе отладки), либо по специальному разъёму вроде того, что у ноутбуков. В радиомагазине можно купить такой разъём и присоединить к нему аккумулятор или 9-тивольтовую батарейку типа «Крона». Источники питания можно менять перемычкой на плате.

Рейтинг программаторов

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

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

Программаторы выпускаются многими компаниями, занимающимися производством компьютерной электроники. Из-за разнообразия программаторов для прошивки микросхем покупателю может быть сложно выбрать подходящую модель. Чтобы быстрее разобраться в характеристиках и возможностях, мы составили свой рейтинг чипов. При его создании командам проекта ВыборЭксперта.ру ориентировалась на такие показатели как:

  • Способ подключения;
  • Назначение;
  • Функциональные особенности;
  • Поддерживаемые ОС;
  • Сложность работы;
  • Стоимость.

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

Выводы

Фирма Atmel сейчас принадлежит Microchip’у, но продолжает выпускать свои семейства микроконтроллеров. Их популярность не угасала за многие годы, однако в последнее время наблюдается активная конкуренция с STM. Пока рано говорить, кто из них вырвется вперед, рассуждения об этом – тема отдельной статьи.

Выбор семейства зависит только от разработчика и поставленных перед ним задач, а AVR контроллеры помогли многим разработчикам «войти» в программирование микроконтроллеров.

Приплыли, господа. Компании Atmel больше нет. Она была продана по частям. Микропроцессорное отделение выкупила компания Microchip (та самая которая PIC делает), а отдел Flash памяти продано компании On Semiconductors Что теперь будет с архитектурой AVR неизвестно. Несколько лет то еще она, конечно, просуществует, но вот что дальше? У Микрочипа есть свои контроллеры и своя архитектура которая занимает внушительный процент рынка. Не вижу смысла им дробить силы на разработку двух разных архитектур. Возможно AVR будет свернуто и все мощности брошены на PIC, а возможно возникнет третья архитектура, этакий гибрид, обьединяющий обе платформы.

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

В общем, я в глубоких раздумьях. У кого какие соображения?

UPD: Акционеры Атмела покурили, подумали и написали Микрочипу ответ с количеством стеба сравнимый  с письмом «Турецкому султану». Само письмо висело на главной странице Атмела с неделю. В общем, основной смысл был такой — Хер вам! <strike>Родина</strike> Атмел не продается! Так что все ок. Выдыхаем!

  • https://datagor.ru/microcontrollers/2889-microchip-proglotila-atmel.html
  • https://arduinoplus.ru/mikrokontrollery-atmel/
  • http://easyelectronics.ru/atmel-rip.html
Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Семинар по технике
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: