Attiny13 прошивка через ардуино

Прошивка и программирование 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 с помощью 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 -> Инструменты -> Записать загрузчик

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

Для примера и проверки загрузите стандартный скетч мигания светодиода:

Перейдите к: Arduino IDE -> Скетч -> Загрузить через программатор

Если вы все сделали правильно, то светодиод должен мигать с интервалом в 1 секунду.

Источник

Прошивка и программирование 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:

Источник

RoboCraft


Программирование Arduino даёт не только огромный простор для фантазии и возможностей, но, как и любой фреймворк, одновременно навязывает свой стиль и ограничивает возможности.
Поэтому, если чувствуется, что Arduino становится тесноват — можно не только перейти на 32-битные контроллеры (например, STM32), но и попробовать более низкоуровневое программирование контроллеров.

Уходя ближе «к железу» — программировать придётся на более близком к железу уровне — и если это не ассемблер, то уж язык программирования Си — точно.
Пример подобного программирования уже приводился в статье Arduino/CraftDuino и WinAVR — программируем на чистом С.
У такого стандартного программирования микроконтроллеров есть существенное преимущество перед использованием Arduino-вских скетчей.
Однако, за низкоуровневый полный контроль и возможность использовать все ресурсы микроконтроллера, приходится расплачиваться долгим и внимательным изучением документации (datasheet-а) на микроконтроллер.
Т.е., если у вас ещё не было опыта работы с конкретным микроконтроллером — то вместо быстренького набрасывания скетча для решения своей задачи — вам придётся потратить дополнительное время на изучение мат. части.

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

Для примера, возьмём меленький, простой и дешёвый контроллер ATtiny13.

ATtiny13

8-битный AVR микроконтроллер с 1 КБ программируемой Flash памяти

— RISC архитектура
— 120 команд, (большинство выполняется за один такт)
— 32 8-битных регистра общего применения
— 1 КБ программируемой Flash памяти программы
— 64 байта EEPROM памяти данных, (до 100 000 циклов записи/стирания)
— 64 байта SRAM памяти (статическое ОЗУ)
— Один 8-разрядный таймер/счётчик с отдельным предделителем и два ШИМ канала
— 4-канальный 10-битный АЦП со встроенным ИОН
— Программируемый сторожевой таймер (watchdog) со встроенным генератором
— Встроенный аналоговый компаратор
— Внутрисистемное программирование через SPI порт
— Внешние и внутренние источники прерывания
Корпусное исполнение:
— 8-выводные PDIP и SOIC корпуса: 6 программируемых линий ввода-вывода

Диапазон напряжения питания, частота:
1.8 – 5.5В (для ATtiny13V) — до 10МГц
2.7 – 5.5В (для ATtiny13) — до 20МГц

Выводы микроконтроллера ATtiny13:

Документация на ATtiny13:

Как видим, микросхема микроконтроллера — маленькая — всего 8 ножек.
Чтобы заставить её работать — нужно просто воткнуть её в макетную плату, подтянуть RESET (первый пин — на схеме обозначается — PB5) к шине питания через 10-килоомный резистор и подать питание — например, 5V снятые с пинов питания контроллера Arduino / CraftDuino.

Разумеется, желательно, ещё повесить конденсатор в 0.1 мкФ между шинами питания.

Подключение ATtiny13 через SPI к CraftDuino

В статье Делаем ISP-программатор из Arduino, уже подробно расписано как нужно подключить микроконтроллер ATtiny13 к контроллеру Arduino или CraftDuino, чтобы его можно было программировать через выводы микросхемы FT232RL используя режим bit-bang (режим управления отдельными выводам микросхемы). Поэтому сразу переходим к софтовой части.

Atmel Studio

Раз решили программировать «по-взрослому», то и среда разработки нужна «взрослая».
Идём на сайт Atmel-a, и скачиваем свежую версию Atmel Studio.

Atmel Studio — (наследница AVR Studio) — это бесплатная среда разработки для микроконтроллеров Atmel.
Сама IDE должна быть знакома, т.к. используется оболочка от Microsoft Visual Studio, однако следует обратить внимание, что в качестве компилятора используется GCC.

После установки, на рабочем столе появится ярлык с симпатичной красной божьей коровкой. Запускаем IDE и привычным образом, быстренько создаём проект.
File -> New -> Project…
Выбираем С/С++ и GCC C Executable Project, пишем имя проекта, например, blink 🙂
Затем, среда предложит выбрать тип используемого микроконтроллера — выбираем ATtiny13.
Всё — шаблонный файл уже создан и можно начинать программировать:

Предлагаемый шаблон программы — напоминает что-то знакомое:

Соответствие функций Arduino на Си

Описание работы портов микроконтроллера и используемых для насткройки и работы регистров, очень подробно приводится в документации на микроконтроллер — ATtiny13 datasheet.

Как увидим далее, конфигурирование и работа с портами сводится к установке соответствующих битов в нужных регистрах микроконтроллера.
Если вы уже имели дело с установкой/проверкой/очисткой битов (работа с битовыми масками), то вам будет проще разобраться в происходящем.
Но, на всякий случай, напомню:
чтобы установить бит N — нужно выполнить побитовое ИЛИ с числом, где этот бит установлен (чтобы получить такое число — мы побитово сдвигаем влево единицу на заданное число позиций).
Соответственно, чтобы сбросить бит N — нужно выполнить побитовое И с числом в котором установлены все биты кроме заданного (чтобы получить такое «интвертированное число» — мы сначала получаем число в котором бит установлен, а потом применяем к нему операцию побитового НЕ).

Так как процедура установки бита встречается чрезвычайно часто — для неё даже есть удобный макрос

, который рекомендуется к использованию.

Для простоты понимания Си-шных методов работы, сопоставим им функции Arduino.

Базовые функции управления портами (см. datasheet стр. 48):

В принципе, хотя у ATtiny13 всего 1 килобайт флеша на котором сильно не разгуляешься ,но даже для этой крохи частично реализован Arduino-вский фреймворк — Core13.
В нём есть реализации для:

Подробнее про использование Core13 можно прочитать здесь: Прошивка и программирование ATtiny13 при помощи Arduino.
Но даже если использовать Arduino IDE не собираетесь — взглянуть на код всё равно стоит, чтобы проверить как работает и что скрывается за реализацией функций Arduino:

Реализация функций digitalWrite() и digitalRead() из Core13 (core13_022_arduino_1_6)

Даже здесь используется много проверок, что разумеется даёт «защиту от дурака», но и является причиной, почему при использовании Arduino-вских функций производительность кода будет ниже.

Частота работы микроконтроллера

По-умолчанию, микроконтроллер ATtiny13 работает на частоте 1.2 МГц — определяется фьюз-битами (так называются специальные конфигурационные биты, находящиеся в специальных ячейках памяти и отвечающие за параметры конфигурации всего МК).
Младший фьюз-байт lfuse = 0x6A
Старший фьюз-байт hfuse = 0xFF

Посмотреть, что означают эти параметры можно в удобном калькуляторе фьюзов для AVR — AVR Fuse Calculator.
В калькуляторе, можно увидеть, что меняя значение младшего фьюз-байта с 0x6A на 0x7A — мы получим работу микроконтроллера на частоте 9.6 МГц за счёт отключения делителя тактового сигнала на 8 (CKDIV8).
9.6 МГц / 8 = 1.2 МГц.

Посмотреть текущие значения фьзов можно при помощи avrdude, командой:

— получим два файла — low_fuse_val.hex и high_fuse_val.hex с шестнацетиричным значением соответствующих фьюзов.

Теперь, зная частоту работы контроллера и базовые методы работы с портами, можем написать микроконтроллерный Hello World — а именно — Arduino-вский — Blink:

Выбираем тип сборки — Release и жмём F7 для сборки проекта (Build -> Build Solution).

Чтобы проверить работу программы — подключаем к третьей ножке (PB4) светодиод с токоограничительным резистором:

Прошивка МК ATtiny13

Остаётся прошить наш микроконтроллер.
Можно взять готовый hex-файл из папки проекта и используя avrdude, прошить МК командой:

А можно, для удобства прошивки, соответствующим образом настроить Atmel Studio.

Настройка Atmel Studio для прошивки МК ATtiny13 через avrdude

Настроить Atmel Studio для прошивки МК ATtiny13 через avrdude, очень просто.

Идём в меню
Tools -> External Tools

И добавляем нашу тулзу — avrdude:

Title:
Deploy ATtiny13

Arguments:
-C C:\ArduBoot\avrdude.conf -c ftbb -P ft0 -B 9600 -p attiny13 -U flash:w:$(TargetDir)$(TargetName).hex:i

Чтобы видеть лог процесса прошивки — нужно поставить галочку рядом с пунктом «Use Output window».

Вот и всё.
Теперь, чтобы прошить МК нужно зайти в меню Tools и выбрать наш пункт «Deploy ATtiny13».

Источник

Adblock
detector