Несмотря на то, что микроконтроллеры семейства ATtiny чрезвычайно дешёвые и при этом считаются очень полезными, всё равно ощущается острый недостаток проектов и руководств по применению этих микросхем. Из этого руководства вы узнаете, как создавать приложения для микроконтроллера ATtiny13 и загружать их посредством среды разработки Arduino IDE.
Прежде всего, ATtiny13 — это 8‑битный микроконтроллер КМОП с низким энергопотреблением на базе усовершенствованной RISC-архитектуры AVR. После приобретения компании Atmel компанией Microchip новый микроконтроллер ATtiny13 по-прежнему находится в производстве.
Выполняя мощные инструкции за один тактовый цикл, микроконтроллер ATtiny13 достигает производительность в 1 миллион операций в секунду на 1 МГц, позволяя разработчикам систем сбалансировать энергопотребление и скорость обработки.
Для проекта нам понадобятся следующие компоненты:
Схема подключения
Соедините элементы, как показано на нижеследующей схеме, созданной с помощью программы Fritzing (полный обзор программы по ссылке).
Чтобы подсоединить компоненты друг с другом вам в первую очередь понадобится расположить микросхему ATtiny, как показано на схеме.
Сначала нужно соединить вывод 5V платы Arduino и вывод 8 микроконтроллера ATtiny. Затем соедините соответствующие выводы платы и микроконтроллера: GND к 4, 13 к 7, 12 к 6, 11 к 5 и, наконец, 10 к 1.
Программирование микроконтроллера ATtiny13
Для загрузки программы в микроконтроллер ATtiny13 нам необходимо настроить плату Arduino в режим программатора. Это можно сделать, загрузив готовый пример ArduinoISP в плату, выбрав пункт меню Файл > Примеры > ArduinoISP (File > Examples > ArduinoISP) в среде разработки.
Теперь наша плата Arduino готова запрограммировать микроконтроллер ATtiny13, но нам ещё нужно настроить среду разработки для работы с ATtiny13, установив специальные файлы. В этом руководстве отдаётся предпочтение файлам от пользователя sleepmanj.
Для установки этих файлов запустите среду Arduino IDE и выберите пункт меню Файл > Настройки (File > Preferences). Скопируйте следующий адрес в поле «Дополнительные ссылки для Менеджера плат» (Additional Boards Manager URLs): https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json. Если у вас уже есть ссылка в этом поле, то можно добавить новую, отделив её от прежней запятой и пробелом.
Теперь зайдите в меню Инструменты > Плата (Tools > Board) и щёлкните на пункте «Менеджер плат» (Boards Manager). Теперь прокрутите вниз, пока не увидите плату DIY ATtiny, установите её файлы, нажав кнопку «Установка» (Install).
Запись начального загрузчика в микроконтроллер ATtiny
По сути, начальный загрузчик (bootloader) — это часть встроенного программного обеспечения, которая позволяет устанавливать новое ПО без использования внешнего программатора.
Чтобы начать программировать микроконтроллер ATtiny13, нам необходимо записать в него начальный загрузчик. Для этого надо выполнить два шага. Первый — в меню Инструменты > Плата (Tools > Board) выбрать ATtiny13. Второй — выбрать пункт меню Инструменты > Записать Загрузчик (Tools > Burn Bootloader).
Необходимо обратить внимание на версию микроконтроллера ATtiny и в меню Инструменты > Процессор (Tools > Processor Version) выбрать ATtiny13 или ATtiny13a в зависимости от вашей версии.
После записи Загрузчика микроконтроллер ATtiny готов для программирования. Вы теперь можете попробовать примеры из среды Arduino IDE, такие как Blink.
Чтобы пример Blink работал как следует, вам необходимо ознакомиться с нижеприведённой схемой.
Здесь вывод 3 на микросхеме определён как 4 (PB4), поэтому скорректированный код будет выглядеть следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//We will replace "LED_BUILTIN" with "4" since ATtiny does not have a built-in led! void setup() { // initialize digital Pin 3 of ATtiny 13(defined in hardware as 4) as an output. pinMode(4, OUTPUT); } // the loop function runs over and over again forever void loop() { digitalWrite(4, HIGH); // turn the LED on (HIGH is the voltage level) delay(1000); // wait for a second digitalWrite(4, LOW); // turn the LED off by making the voltage LOW delay(1000); // wait for a second } |
Далее измените свою схему, добавив светодиод между выводом 3 и землёй GND вместе с подходящим резистором.
Поиск и устранение неисправностей
Если при реализации этого проекта у вас возникли какие-либо проблемы, вы можете выполнить следующее:
- Перепроверьте все соединения и положение микросхемы ATtiny и светодиода.
- Перезапишите пример ArduinoISP в плату Arduino.
- Установите электролитический конденсатор 10 мкФ между землёй и выводом сброса (Reset) на плате Arduino. Убедитесь, что установили конденсатор в правильном положении — отрицательная ножка соединяется с землёй.
- Установите любой большой конденсатор между линией 5 В (5V) и линией земли на макетной плате, это поможет сгладить скачки напряжения.
- Убедитесь, что плата Arduino, через которую программируется микроконтроллер ATtiny, получает достаточно электропитания. 9‑вольтовой батарейки может оказаться недостаточно.
- Замените свою плату Arduino на другую плату Arduino.
- Убедитесь, что используете актуальную версию среды разработки и актуальные специальные файлы для микроконтроллера.
- Откройте меню «Инструменты» (Tools) и удостоверьтесь, что оно выглядит, как на рисунке из раздела этой статьи «Запись начального загрузчика». Если что-то отличается, то измените это и снова запишите загрузчик.
Вам могут понадобиться некоторые элементы в процессе выявления проблем: электролитический конденсатор 10 мкФ и любой большой электролитический конденсатор.
Теперь, когда всё готово, время исследовать новые идеи и применения, программируя микроконтроллер ATtiny с помощью среды Arduino IDE!
8 комментариев. Оставить новый
вот только для мигания светодиода памяти и хватит. ардуино иде создает пипец какой неоптимизированный код.
не работает ссылочка для менеджера плат
Поправили ссылку на актуальную.
Не работат ссылка для менеджера плат.
https://raw.githubusercontent.com/sleemanj/optiboot/master/dists/package_gogo_diy_attiny_index.json.
точку в конце нужно убрать
Актуальную библиотеку для платы, с которой компилируется приведенный в статье код взял тут https://github.com/MCUdude/MicroCore
В статье большая неточность (или не до сказанность).
«Записать загрузчик» в среде Ардуино ИДЕ это не только запись bootloader’а для возможности прошивки микроконтроллера в дальнейшем по UART, но (!) и установка в соответсвии с конфигурацией необходимых фьюз-битов.
Собственно говоря, для attiny13 и не существует bootloader’ов. У него всего 1кб памяти. Поэтому при нажатии «записать загрузчик» просто устанавливаются фьюз-биты и не более.
Здравствуйте! Благодарим вам за комментарий!