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/.
Необходимые компоненты
- Плата Arduino Uno (купить на AliExpress) - необходима только на начальном этапе, для первоначальной загрузки загрузчика.
- Микроконтроллер ATtiny85 (купить на AliExpress).
- USB A-type Plug Male – USB разъем “папа” A-типа (купить на AliExpress).
- Резисторы 47 Ом (2 шт.) и 1 кОм (купить на AliExpress).
- Zener Diode (2 шт.) – диод Зенера, стабилитрон.
- Диод IN5819 (купить на AliExpress).
- 8-Pin IC Base - 8-пиновая основа (база) для микросхемы (купить на AliExpress).
- Макетная плата.
- Соединительные провода.
Краткие сведения о микроконтроллере 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.’
http://digistump.com/package_digistump_index.json
После этого откройте пункт меню 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, начнет мигать.
Более подробно процесс работы платы нашего программатора можно посмотреть в следующем видео.
2 521 просмотров