Меню

Программатор своими руками для attiny

Digitrode

цифровая электроника вычислительная техника встраиваемые системы

Самодельный программатор UPDI для программирования микроконтроллеров ATtiny серии 0

Программатор UPDI для микроконтроллеров ATtiny своими руками

Благодаря своим крошечным размерам и улучшенным возможностям, микроконтроллеры ATtiny серии 0 были восхищением для разработчиков, ищущих микроконтроллер с простотой использования, связанной с платами Arduino, но с гораздо меньшим форм-фактором. Наряду с ATtiny серии 1 микроконтроллеры серии ATtiny-0 должны были служить современной заменой другим популярным чипам ATtiny, таким как ATtiny85 и ATtiny45. Хотя они были в состоянии сделать это, обеспечивая при этом невероятный функционал, одна проблема, с которой пользователи сталкивались со временем, заключалась в трудности в программировании микросхем, так как в отличие от предыдущих микросхем ATtiny они используют не очень популярный протокол программирования UPDI вместо протокола ISP, использовавшегося в предыдущих сериях.

Чтобы решить эту проблему, несколько инженеров разработали различные способы программирования серии Attiny-0. В сегодняшнем материале мы рассмотрим, пожалуй, самый элегантный способ, который может предложит инженерное сообщество – миниатюрный программатор UPDI с разъемом USB, разработанный Дэвидом Джонсоном-Дэвисом.

Этот программатор основан на Atmega328P и действительно может быть назван Arduino Uno на USB. Он использует микроконтроллер Atmega328P в качестве программатора UPDI, а FT231 служит конвертером USB в UART, облегчая обмен данными между программатором и компьютером. Как упомянуто выше, устройство может также использоваться в качестве ограниченного Arduino Uno, по той причине, что цифровой вывод 6 Atmega328P, который совместим с контактом 6 на Arduino Uno, выведен, поэтому его можно использовать для связанных с Arduino действий.

Принципиальная схема программатора UPDI представлена на следующем изображении. Здесь в основном используются SMD-компоненты для достижения необходимого уровня миниатюризации.

Он имеет две основные микросхемы: микроконтроллер Atmega328p и конвертер FT231 «USB в UART». ATmega328p действует как программатор UPDI, а FTDI-чип служит конвертером, преобразуя сигналы USB с ПК в UART для ATmega328p и наоборот. Одним из ключевых конструктивных соображений, реализованных на плате, является создание трех дополнительных площадок вместе с контактами программирования UPDI на краю платы. Дополнительные контакты предоставляют пользователю порт ISP, через который пользователи могут загружать загрузчик на ATmega328p.

Хотя программатор серии ATTiny-0 можно прошить с помощью нескольких инструментов, таких как Atmel Studio, мы понимаем, что среднестатистический радиолюбитель хочет иметь возможность писать код, как в Arduino IDE. В результате мы сосредоточимся на программировании с помощью Arduino IDE. Как и в случае любой платы / микроконтроллера, для программирования в Arduino IDE требуется ядро Arduino. Это требование было реализовано для серии ATtiny-0 с новым ядром Arduino для новых чипов ATtiny, разработанным Спенсом Конде и его сотрудниками, под названием megaTinyCore (https://github.com/SpenceKonde/megaTinyCore).

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

Сначала припаяйте провод на месте резистора 0 Ом на плате. Это соединит линию сброса с микроконтроллером. Далее припаяйте провода к контактам MOSI, MISO, SCK и RESET на плате и соедините их с разъемами, к которым можно подключить провода. Рекомендуется использовать для соединений очень тонкие провода, чтобы вы случайно не перекрыли площадки печатной платы. Другой вариант – припаять контакты разъема прямо к плате.

Затем подключите 3-контактный разъем к трем клеммам в верхней части платы программатора UPDI, чтобы вы могли использовать это для подключения GND и 5 В к плате.

Подключите ISP-программатор к плате через шесть проводов, которые вы припаяли. Обратите внимание, что это может быть плата Arduino, как UNO. В Arduino IDE выберите Arduino/Genuino Uno из раздела Arduino AVR Boards в меню Boards (Платы) и установите для Programmer (Программатор) значение ArduinoISP при использовании Arduino UNO или соответствующее имя программатора при использовании любого другого программатора. Выберите порт, к которому подключен программатор, и выберите Burn Bootloader (Загрузить загрузчик), чтобы загрузить загрузчик на плату.

Читайте также:  Резинки с афрокосами своими руками

После того, как эта работа будет успешно завершена, у вас должен быть установлен загрузчик UPDI. Вы можете проверить успешность процесса перепрошивки загрузчика, загрузив пример Arduino Blink в программатор UPDI через порт USB. После тестирования загрузчика следующая задача – загрузить код jtag2updi на плату.

Сначала загрузите скетч jtag2updi (https://github.com/SpenceKonde/jtag2updi). Распакуйте zip-файл и откройте папку jtag2updi. Откройте скетч jtag2updi.ino с помощью Arduino IDE, подключите программатор UPDI к компьютеру через USB и загрузите код, как вы это делали для примера Blink. Уберите провод, который вы установили ранее на позицию резистора 0 Ом на плате программатора UPDI.

Вот и все, плата теперь готова к использованию в качестве программатора UPDI, но у нас есть еще один шаг. UPDI – это протокол, который не входит в список протоколов программатора, которые были поставлены с Arduino IDE. Таким образом, чтобы Arduino IDE распознал плату как программатор, в IDE необходимо установить megaTinyCore. Шаги по установке megaTinyCore уже были описаны в нашем недавнем руководстве, в котором мы рассмотрели, как превратить Arduino Nano в программатор UPDI. Вы можете выполнить эти шаги, чтобы установить megaTinyCore в Arduino IDE.

Итак, программатор UPDI готов, и Arduino IDE готова к программированию по UPDI. Выполните следующие действия, чтобы запрограммировать микроконтроллер ATtiny серии 0. Сначала подключите ATtiny к программатору UPDI, как показано на следующем изображении.

Соединение довольно простое: GND – GND, 5V – VCC, UPDI – UPDI.

С микроконтроллером, подключенным к вашему программатору Arduino UPDI, теперь мы готовы загрузить код в ATtiny/ Откройте или напишите код, который вы хотите загрузить. Проверьте код, чтобы убедиться в отсутствии ошибок, затем перейдите в Tools — Board (Инструменты – Плата) и прокрутите вниз, пока не увидите ATtiny, с которым вы работаете, в списке и выберите его. Платы ATtiny будут установлены автоматически после установки megaTinyCore.

Это должно обновить параметры, отображаемые при нажатии на инструменты. Теперь нам нужно указать Arduino IDE, чтобы мы использовали наш программатор. Для этого перейдите в Tools-Programmers (Инструменты – Программаторы). Прокрутите вниз панель и выберите в качестве программатора jtag2updi (megaTinycore).

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

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

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

Источник

USB программатор для ATtiny85 на основе загрузчика Digispark

ATtiny – это серия самых маленьких микроконтроллеров из семейства AVR. Эти микроконтроллеры могут использовать большинство библиотек, доступных для платформы Arduino. ATtiny85 – это 8-пиновый 8-битный микроконтроллер семейства AVR. Его исключительно малый размер и низкое энергопотребление делают его чрезвычайно удобным для реализации небольших (в особенности переносных) проектов. Но его программирование может вызвать некоторые сложности у начинающих радиолюбителей поскольку у него нет USB интерфейса как у современных микроконтроллерных плат (например, Arduino).

В сети можно найти статьи по программированию микроконтроллера ATtiny85 с помощью платы Arduino Uno. Но использование платы Arduino в качестве ISP (In System Programming — внутрисистемное программирование) программатора для ATtiny85 не очень удобно и отнимает достаточно много времени. Поэтому в данной статье мы рассмотрим создание простого программатора для ATtiny85, который можно подключать к USB интерфейсу и, таким образом, программировать ATtiny85 как микроконтроллерную плату (с USB).

Читайте также:  Скворечники своими руками материалы

Также подобную готовую плату можно купить на Aliexpress (есть платы как с уже установленным микроконтроллером, так и с местом под его установку), в сети ее называют Digispark ATtiny85. В интернете можно найти достаточно много обзоров данной платы, лично мне понравился больше всего вот этот обзор — https://voltiq.ru/digispark-attiny85-review/.

Необходимые компоненты

  1. Плата Arduino Uno (купить на AliExpress) — необходима только на начальном этапе, для первоначальной загрузки загрузчика.
  2. Микроконтроллер ATtiny85 (купить на AliExpress).
  3. USB A-type Plug Male – USB разъем “папа” A-типа (купить на AliExpress).
  4. Резисторы 47 Ом (2 шт.) и 1 кОм (купить на AliExpress).
  5. Zener Diode (2 шт.) – диод Зенера, стабилитрон.
  6. Диод IN5819 (купить на AliExpress).
  7. 8-Pin IC Base — 8-пиновая основа (база) для микросхемы (купить на AliExpress).
  8. Макетная плата.
  9. Соединительные провода.

Краткие сведения о микроконтроллере ATtiny85

ATtiny85 – это высокопроизводительный 8-битный микроконтроллер с низким энергопотреблением, построенный на основе архитектуры Advanced RISC. Он имеет 8 Кбайт перепрограммируемой флеш-памяти (память программ), 512 Байт EEPROM (энергонезависимой памяти), 512 Байт оперативной памяти (SRAM), 6 контактов ввода/вывода общего назначения 32 регистра общего назначения, один 8-битный таймер/счетчик с режимом сравнения, один 8-битный высокоскоростной таймер/счетчик, USI (универсальный последовательный интерфейс), внутренние и внешние прерывания, 4-х канальный 10-битный АЦП (аналого-цифровой преобразователь), программируемый сторожевой таймер с внутренним генератором, 3 программно управляемых режима энергопотребления.

Назначение контактов (распиновка) микроконтроллера ATtiny85 приведено на следующем рисунке.

Большинство контактов ATtiny85 могут выполнять несколько функций.

Перепрограммируемый загрузчик ATtiny85 с использованием платы Arduino Uno

Для программирования ATtiny85 без использования платы Arduino мы сначала должны загрузить в него загрузчик используя плату Arduino Uno. Этот процесс выполняется один раз и в дальнейшем у нас не будет необходимости в использовании платы Arduino для программирования микроконтроллера ATtiny85. Загрузчик (bootloader) – это специальная программа, которая выполняется в микроконтроллере, который необходимо запрограммировать. Использование загрузчика – это один из самых удобных способов загрузки программы в микроконтроллер. Загрузчик находится в микроконтроллере и выполняет поступающие команды, а затем записывает новую программу в память микроконтроллера.

Перепрограммируемый загрузчик в микроконтроллере устраняет необходимость в использовании специальных внешних аппаратных средств (плат программирования, программаторов) для программирования микроконтроллера и позволяет загружать программу в микроконтроллер непосредственно с помощью USB соединения. Платы Digispark ATtiny85 (а выбор подобных плат сейчас достаточно большой) работают на загрузчике “micronucleus tiny85”, первоначально написанным Bluebie. Загрузчик – это программный код, который заранее загружен в плату Digispark и позволяет работать ей как USB устройство, которое можно программировать с помощью Arduino IDE. Мы будем использовать аналогичный подход и загружать загрузчик digispark attiny85 в наш микроконтроллер ATtiny85.

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

Шаг 1. Конфигурирование платы Arduino Uno в качестве ISP программатора.

Поскольку ATtiny85 является всего лишь микроконтроллером, для его программирования требуется ISP (In-System Programming — внутрисистемное программирование). Поэтому для программирования ATtiny85 нам необходимо сначала сконфигурировать плату Arduino Uno в качестве ISP программатора. Для этого подключите плату Arduino Uno к компьютеру и запустите Arduino IDE. После этого откройте пункт меню File > Example > ArduinoISP и загрузите в Arduino ISP код.

Шаг 2. Схема перепрограммируемого загрузчика ATtiny85.

Схема перепрограммируемого загрузчика ATtiny85 представлена на следующем рисунке.

Читайте также:  Сделать пассики своими руками

Конденсатор 10 мкФ подключен между контактами Reset и GND платы Arduino. Все соединения схемы представлены в следующей таблице:

ATtiny85 Pin Arduino Uno Pin
Vcc 5V
GND GND
Pin 2 13
Pin 1 12
Pin 0 11
Reset 10

После сборки схемы подключите плату Arduino Uno и запустите Arduino IDE. Определите к какому COM порту подключена плата Arduino Uno (в диспетчере устройств Windows). В нашем случае это COM5.

После этого скачайте файлы для загрузчика ATtiny85 по следующей ссылке. Откройте файл «Burn_AT85_bootloader.bat» и измените в нем COM порт с именем «PCOM5» на тот COM порт, к которому подключена у вас плата Arduino Uno. Сохраните изменения.

После этого скопируйте отредактированный файл «Burn_AT85_bootloader.bat» и файл ATtiny85.hex» в корневой каталог Arduino IDE (C:\Program Files (x86)\Arduino).

После этого сделайте клик правой кнопкой мыши на файле «Burn_AT85_bootloader.bat» и выберите «Run as Admin» (запуск от администратора). Необходимо примерно 5-6 секунд чтобы загрузчик загрузился. Если все прошло успешно, то вы должны увидеть сообщение «AVRdude done. Thank you. Press any key to continue. «.

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

Схема USB программатора для ATtiny85

Схема USB программатора для ATtiny85 представлена на следующем рисунке. В ней мы подключаем микроконтроллер ATtiny85 к разъему Male USB Plug. За основу схемы была взята схема платы Digispark ATtiny85, расположенная по следующему адресу.

R3 в данной схеме выполняет роль подтягивающего резистора и подключен между контактами Vcc и PB3 микроконтроллера. Стабилитроны D1-D2 используются для защиты USB интерфейса. После сборки программатора на перфорированной плате у нас получилась конструкция следующего вида:

Установка драйверов Digispark

Чтобы программировать ATtiny85 через USB вам необходимо установить на свой компьютер драйверы Digispark. Скачайте их по приведенной ссылке, извлеките их из zip архива и запустите на выполнение файл “DPinst64.exe” чтобы установить эти драйверы.

После того как драйверы будут успешно установлены, подключите собранную плату программатора с установленным в нее ATtiny85 к компьютеру. После этого откройте диспетчер устройств в Windows и найдите в нем устройство ATtiny85 в устройствах “libusb-win32 devices” под именем “Digispark Bootloader”. Если таким образом вам не удается найти ‘libusb-win32 devices’ в диспетчере устройств, нажмите в нем обзор и выполните поиск скрытых устройств (‘Show hidden Devices’).

Конфигурирование Arduino IDE для программирования ATttiny85

Для того, чтобы программировать плату ATtiny85 с помощью Arduino IDE сначала нам необходимо добавить поддержку платы Digispark в Arduino IDE. Для этого откройте пункт меню File > Preferences, добавьте следующую ссылку в Additional Boards Manager URLs в Arduino IDE и нажмите ‘OK.’

После этого откройте пункт меню tools > Board > Board Manager, выполните поиск ‘Digistump AVR’ и установите его последнюю версию.

После этого в инструментах вы обнаружите новый пункт меню с именем ‘Digispark’.

Затем откройте пункт меню file > Examples > Basics и откройте Blink example (пример с мигающим светодиодом).

Измените в коде этого примера номер контакта с LED_BUILTIN на 0.

После этого откройте пункт меню Tools -> Board и выберите плату “Digispark (Default – 16mhz)”. После этого в Arduino IDE нажмите кнопку загрузки кода.

Примечание : подключайте плату программатора ATtiny85 к компьютеру только тогда, когда в Arduino IDE появится сообщение “Plugin device now”.

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

Более подробно процесс работы платы нашего программатора можно посмотреть в следующем видео.

Источник