Найти в Дзене
Simple Radio

Программирование ATtiny13 в Arduino IDE

Всем привет. В этой статье я хочу рассказать о компактных, недорогих и все еще актуальных микроконтроллерах ATtiny13A и работу с ними в среде Arduino IDE.

Микроконтроллер ATtiny13 и плата переходник для него.
Микроконтроллер ATtiny13 и плата переходник для него.

Прежде всего остановимся на характеристиках микроконтроллера. ATtiny13 выпускается в корпусах, как для выводного (DIP8) так и для поверхностного монтажа (SOIC8). Я выбрал для себя второй вариант.

ATtiny13 в корпусе для поверхностного монтажа.
ATtiny13 в корпусе для поверхностного монтажа.

Ниже перечислены некоторые характеристики Attiny13:

  • Частота 128 KHz - 9.6 MHz. До 20 MHz при внешнем генераторе. (по умолчанию частота 1.2 MHz).
  • Напряжение питания 1.8 – 5.5 V.
  • Flash память для программ - 1k.
  • SRAM (Оперативная память) - 64b.
  • EEPROM (энергонезависимая память) - 64b.
  • Цифровые пины - 6 шт
  • Аналоговые пины - 4 шт
  • Таймер – 1шт (шим может работать одновременно только на одном пине из двух)

Интерфейсов SPI, UART, I2C нет. На самом деле характеристики достаточно скудные, но для простых задач их вполне достаточно. Основные особенности – малое количество памяти для программ и малое количество пинов (всего доступно 6 шт). Но это плата за компактность и малую стоимость.

Переходим к программированию. Нам понадобится: Arduino IDE с установленным ядром для ATtiny13. Плата Arduino в нашем случае Arduino Nano, желательно макетная плата и провода для нее. Если микроконтроллер у вас в корпусе для поверхностного монтажа, то рекомендую заказать или сделать переходник на DIP8. Так же желательны: конденсатор на 10мкФ, конденсатор на 0.1 мкФ и резистор на 10 кОм.

В первую очередь установим и настроим Arduino IDE. Если Arduino IDE уже установлена переходим к следующему этапу. Если нет – скачиваем последнюю версию с официального сайта (https://www.arduino.cc/en/software). У меня версия 2.0.3.

Для того, чтобы работать с ATtiny13 в среде Arduino IDE, нужно установить так называемое ядро. Дело в том, что изначально Arduino IDE может работать только с платами ардуино. Для этого открываем Arduino IDE, нажимаем Файл/Параметры – откроется окно с параметрами. Кстати, там же можно выбрать темную тему приложения (как у меня).

Arduino IDE параметры.
Arduino IDE параметры.

Нас интересует самая нижняя строчка – дополнительные ссылки для Менеджера плат.

Окно параметров Arduino IDE.
Окно параметров Arduino IDE.

Нажимаем кнопку справа от этой строки. Откроется окно для ввода ссылок для менеджера плат.

Окно для ввода ссылок для менеджера плат.
Окно для ввода ссылок для менеджера плат.

Копируем туда вот эту ссылку https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json и нажимаем OK. В окне параметры так же нажимаем OK. После этого нажимаем Инструменты/Плата/Менеджер плат.

Менеджер плат.
Менеджер плат.

Откроется менеджер плат. В версии приложения 2.0.3 менеджер открывается в колонке в левой части экрана, в более ранних версиях, он открывается в отдельном окне. Далее в строке поиска нужно вписать attiny. Если на предыдущих этапах все сделано правильно, то в менеджере плат появится ядро MicroCore.

Установка ядра MicroCore.
Установка ядра MicroCore.

Нажимаем кнопку установить. Если все прошло успешно, вы увидите сообщение об успешной установке.

Ядро установлено.
Ядро установлено.

Готово. Ядро для ATtiny 13 установлено. После этого в списке плат появится новая вкладка MicroCore в которой можно выбрать плату ATtiny13.

Выбор платы ATtiny13.
Выбор платы ATtiny13.

Теперь нужно подготовить программатор. В качестве программатора мы будем использовать плату Arduino Nano. Для того, чтобы Arduino Nano стала программатором, нужно загрузить в нее скетч ArduinoISP. Для этого подключаем плату к компьютеру, в Arduino IDE идем в Инструменты/Плата/Arduino AVR Boards и выбираем Arduino Nano.

Выбираем Arduino Nano.
Выбираем Arduino Nano.

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

Выбираем COM порт.
Выбираем COM порт.

После этого идем Файл/Примеры/ArduinoISP/ArduinoISP.

Выбираем этот пример.
Выбираем этот пример.

Откроется новое окно со скетчем программатора. Осталось загрузить скетч в Arduino Nano и программатор готов. Для этого идем Скетч/Загрузить на плату.

Загрузка ArduinoISP на плату.
Загрузка ArduinoISP на плату.

Если все прошло успешно, программатор готов к использованию.

Теперь можно подключать ATtiny к программатору. Для начала ознакомимся с распиновкой.

Распиновка со страницы автора MicroCore
Распиновка со страницы автора MicroCore

Стоит обратить внимание на то, что отсчет пинов на ATtiny13 начинается с ножки, возле которой находится круглое углубление или треугольник. Отсчет ножек ведется против часовой стрелки. Таким образом получается, что восьмой пин, находится напротив первого. Так нумеруются как корпуса с выводами, так и корпуса для поверхностного монтажа. Если вы используете переходник как у меня, то на нем уже подписаны номера выводов. Главное правильно запаять в него микросхему. Нужно совместить ключ (треугольник или углубление на корпусе), микросхемы с ключом переходника.

Номера выводов.
Номера выводов.
Микросхема на переходнике.
Микросхема на переходнике.

Переходим к подключению ATtiny к нашему программатору. Для начала установим все на макетную плату. Далее соединяем:

  • Вывод 1 ATtiny ---- Пин D10 Arduino Nano
  • Вывод 4 ATtiny ---- Пин GND Arduino Nano
  • Вывод 5 ATtiny ---- Пин D11 Arduino Nano
  • Вывод 6 ATtiny ---- Пин D12 Arduino Nano
  • Вывод 7 ATtiny ---- Пин D13 Arduino Nano
  • Вывод 8 ATtiny ---- Пин 5V Arduino Nano

Так же рекомендуется подключить резистор на 10Ком между 1 и 8 выводом ATtiny, конденсатор 0.1мкФ между 4 и 8 выводом ATtiny и конденсатор 10мкФ между пинами RST и GND Arduino Nano (плюс конденсатора соединяем с RST). У меня заработало и без них, но лучше их поставить.

Теперь все готово к прошивке. В этой статье мы прошьем стандартный пример – помигаем светодиодом. Светодиод подключим ко второй ножке микросхемы. Крайне желательно сделать это через резистор (220 Ом).

Открываем Arduino IDE, создаем новый скетч (Файл/New sketch) и пишем следующий код.

Стандартный пример Blink.
Стандартный пример Blink.

Тут сразу стоит отметить, как мы обращаемся к пинам ATtiny. Как мы помним, светодиод подключен ко второй ноге микросхемы, а в коде мы пишем PB3. Это не ошибка, внимательно смотрите распиновку. Номер ноги микросхемы не равен номеру порта. При программировании «голых» микроконтроллеров, лучше обращаться к пинам таким образом. Например: если бы светодиод был подключен к третьей ноге микросхемы, то в коде мы бы указали PB4.

После этого нужно загрузить код в наш микроконтроллер. Подключаем нашу Arduino Nano к компьютеру (если еще не подключена). Прежде всего нужно убедится в том, что в Arduino IDE выбрана плата ATtiny13 и правильно выбран ее COM порт (у вас номер COM порта может отличаться).

ATtiny13 выбрана.
ATtiny13 выбрана.
COM порт выбран.
COM порт выбран.

Далее обязательно выбираем в качестве программатора нашу плату Arduino Nano. Для этого идем Инструменты/Программатор и выбираем Arduino as ISP

Выбираем программатор.
Выбираем программатор.

Если все выбрано правильно, жмем Скетч/Загрузить на плату при помощи программатора. Внимание! Это важно, нажимать нужно именно кнопку – загрузить на плату при помощи программатора.

-21

Готово. После окончания загрузки, светодиод начнет мигать.

Светодиод мигает.
Светодиод мигает.

В следующих статьях по ATtiny13, мы разберем, как работать с аналоговыми пинами, попробуем генерировать ШИМ, будем подключать разные модули, и соберем несколько устройств, с использованием данного микроконтроллера.

Спасибо, что дочитали статью до конца! Если вам понравилось, пожалуйста поставьте лайк. Если вам нравится данная тематика, подписывайтесь на мой канал. До новых встреч!