Прошивка и программирование ATtiny13 при помощи Arduino
Для данной реализации нам понадобится:
Первым делом для прошивки Attiny13 через arduino, нам нужно подключить эти два микроконтроллера между собой по вот этой схеме:
Красным обозначены пины Ардуино.
После подключения, нам нужно скачать вот этот архив: https://yadi.sk/d/rBiJJfaA3PsEWX из этого архива папку под названием “attiny13” нужно положить по следующему пути: C:\Program Files (x86)\Arduino\hardware
После этого нам необходимо установить скетч в ардуино “ArduinoISP” этот скетч берется из стандартных примеров:
Далее напишем скетч Блинк для Attiny13:
Диод будет подключаться к PB4 ноге attiny13
Далее для загрузки в вкладке инструменты нам нужно выбрать следующие параметры для Attiny13:
А именно выбрать плату ATtiny13, Frequency выставить 1.2MHz, выбрать компорт к которому подключена Ардуино. И самое главное выбрать программатор Arduino as ISP
И после этого все должно загрузиться без ошибок.
Демонстрация работы данной программы можно увидеть в видео приведенном в конце статьи.
Прошивка и программирование ATtiny13 при помощи Arduino UPD 17.03.2016
Всем привет. Уже давно появился способ программировать маленькие, дешёвые, экономичные к питанию и доступные микроконтроллеры ATtiny13A.
Вот собственно всё то что ниже, только в видео формате:
Сегодня расскажу, как я зашиваю Arduino’вские скетчи в ATtiny13A.
Итак, для начала нам нужно скачать вот этот архив (взято и совсем чуть-чуть доделано отсюда), положить файлы по адресу «\Documents\Arduino\hardware\». Должно получится что-то типа «C:\Users\Администратор\Documents\Arduino\hardware\attiny13\avr\cores\core13».
Перезапускаем Arduino IDE если она запущена на данный момент, это нужно для того, чтобы среда добавила новый микроконтроллер в список плат.
Обязательно проверяем, правильно ли у нас выбрано «расположение папки со скетчами» (посмотреть можно во вкладке «Файл/Настройки»):
Туда нам будет нужно распаковать архив с ядром для ATtiny13.
Теперь прошьём в дуинку ArduinoISP из примеров Arduino IDE:
Потом подключаем ATtiny13 к Arduino, как показано на картинке:
Потом нужно изменить тип программатора на Arduino as ISP, как показано на скриншоте:
Теперь мы можем выбрать, на какой частоте может работать микроконтроллер ATtiny13.
С завода ATtiny13 работает на частоте в 1.2 МГц, то есть микроконтроллер тактируется от внутренней RC- цепочки на частоте в 9.6 МГц и включён делитель на 8, поэтому я указал частоту в 1.2 МГц как дефолтную:
Как видим, доступные частоты — 1.2 МГц, 4.8 МГц и 9.6 МГц. Для изменения частоты нам нужно нажать на кнопку «Записать загрузчик», которая располагается в вкладке «Сервис».
Что же среда делает при нажатии на кнопку «Записать загрузчик»?
Arduino IDE в данном случае просто выставляет нужные фьюзы микроконтроллера.
К примеру, мне нужно, чтобы ATtiny13 работал на частоте в 4.8 мГц, я выбираю нужную мне частоту и только один раз жму кнопку «Записать загрузчик» — всё. Теперь микроконтроллер будет всегда работать на заданной частоте, если будет нужно изменить частоту опять — проделываем описанную выше процедуру.
Сразу скажу, что рост частоты приведёт за собой рост потребления контроллера, чем чаще переключаются транзисторы в микроконтроллере тем больше он потребляет.
Для каких-то там мигалок, я считаю, выполнение 1.2 миллиона инструкций будет с лихвой, да и на такой частоте микроконтроллер потребляет около 1 миллиампера, вот можете посмотреть скрин из даташита:
Минимальное рабочее напряжение, при котором ATtiny13 сохраняет работоспособность — 1.8 В, причем гарантировано будет работать, в данном случае, только на частоте в 1.2 МГц.
Итак, зашьем для начала почти родной начинающим ардуинщикам пример blink, ну как же без него?
Как вы уже заметили, скетч стал заметно легче, чем для Arduino Uno. Это связано с тем, что урезаны большинство Arduino’вских функций ну и они немного больше оптимизированные.
поддерживаются следующие функции:
pinMode()
digitalWrite()
digitalRead()
analogRead()
analogReference(INTERNAL) / (EXTERNAL)
shiftOut()
pulseIn()
analogWrite()
millis()
micros()
delay()
delayMicroseconds()
Итак, как мы только что увидели, нам доступно всего 1024 байта. Мало ли это? Ну, смотря для каких задач. Если, например, для каких-то там мигалок, пищалок или индикаторов, думаю, будет вполне достаточно, хотя можно даже что-то посерьёзней сварганить, особенно если познакомится с AVR-Cи.
Распиновка микроконтроллера из даташита:
К примеру, PB4 — это то же, что и pin 4, или просто 4.
Аналоговые входы — все, на которых пишет ADC*, например PB4 — это есть ADC2, то есть для того, чтобы считать напряжение, пишем analogRead(A2); или просто analogRead(2);, аппаратный ШИМ поддерживают только порты 0 и 1.
UPD0: добавил ссылку как экономить место на микроконтроллере и как моделировать Arduino в программе Proteus:
Программирование Attiny13 с помощью IDE Arduino Uno. Руководство
В этом кратком руководстве мы расскажем как можно быстро запрограммировать микроконтроллер Attiny13 с помощью Ардуино.
1. Перевод Ардуино в программатор AVRISP
(AVR — это семейство микроконтроллеров. ISP означает «внутрисистемное программирование»)
Откройте Arduino IDE -> Файл -> Примеры -> ArduinoISP -> ArduinoISP и загрузите в Arduino.
2. Установка платы для ATtiny13 в IDE Arduino
Для установки платы в Arduino IDE откройте Arduino IDE -> Файл -> Настройки, перейдите к URL-адресам Дополнительные ссылки для Менеджера плат и вставьте нижеприведенную ссылку:
Затем нажмите ОК
Далее откройте Arduino IDE -> Инструменты -> Платы -> Менеджер плат. Найдите MicroCore и нажмите «Установка».
3. Подключение Attiny13 к Ардуино
- ATtiny13A, вывод 1 -> Arduino 10
- ATtiny13A, вывод 5 -> Arduino 11
- ATtiny13A, вывод 6 -> Arduino 12
- ATtiny13A, вывод 7 -> Arduino 13
- ATtiny13A вывод 8 -> 5в
- ATtiny13A, вывод 4 -> Земля (GND)
Светодиод и резистор нужны только для тестирования, чтобы увидеть, работает ли загруженный пример кода или нет.
4. Настройки Arduino IDE для Attiny13
Перейдите в Arduino IDE -> Инструменты и выберите:
- Плата: ATtiny13
- BOD: 4,3 В
- Тактовая частота: внутренняя частота 1,2 МГц.
- LTO компилятора: Включить
- Порт: (порт Arduino)
- Программатор: Arduino как ISP
5. Запись загрузчика
(Вам нужно сделать это только один раз для конкретной Attiny13)
Перейдите в Arduino IDE -> Инструменты -> Записать загрузчик
В консоли вы можете увидеть ошибку, но не обращайте на нее внимания.
6. Загрузка скетча Blink
Для примера и проверки загрузите стандартный скетч мигания светодиода:
Перейдите к: Arduino IDE -> Скетч -> Загрузить через программатор
Если вы все сделали правильно, то светодиод должен мигать с интервалом в 1 секунду.
Программирование ATTINY13 / ATTINY13A в Arduino IDE
Несмотря на то, что микроконтроллеры семейства 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), поэтому скорректированный код будет выглядеть следующим образом:
Далее измените свою схему, добавив светодиод между выводом 3 и землёй GND вместе с подходящим резистором.
Поиск и устранение неисправностей
Если при реализации этого проекта у вас возникли какие-либо проблемы, вы можете выполнить следующее:
- Перепроверьте все соединения и положение микросхемы ATtiny и светодиода.
- Перезапишите пример ArduinoISP в плату Arduino.
- Установите электролитический конденсатор 10 мкФ между землёй и выводом сброса (Reset) на плате Arduino. Убедитесь, что установили конденсатор в правильном положении — отрицательная ножка соединяется с землёй.
- Установите любой большой конденсатор между линией 5 В (5V) и линией земли на макетной плате, это поможет сгладить скачки напряжения.
- Убедитесь, что плата Arduino, через которую программируется микроконтроллер ATtiny, получает достаточно электропитания. 9‑вольтовой батарейки может оказаться недостаточно.
- Замените свою плату Arduino на другую плату Arduino.
- Убедитесь, что используете актуальную версию среды разработки и актуальные специальные файлы для микроконтроллера.
- Откройте меню «Инструменты» (Tools) и удостоверьтесь, что оно выглядит, как на рисунке из раздела этой статьи «Запись начального загрузчика». Если что-то отличается, то измените это и снова запишите загрузчик.
Вам могут понадобиться некоторые элементы в процессе выявления проблем: электролитический конденсатор 10 мкФ и любой большой электролитический конденсатор.
Теперь, когда всё готово, время исследовать новые идеи и применения, программируя микроконтроллер ATtiny с помощью среды Arduino IDE!