Attiny13 программирование: Переходим от Arduino к программированию ATtiny13 на C – RoboCraft
|Содержание
Изучаем ATTINY13, восстанавливаем новогоднюю елочку
Как то приобрел в хозяйство маленькие контроллеры ATTiny13. Недавно руки дошли с ними повозиться.
Приобрести их можно по цене $3.3/10шт в корпусе SOP8 или $4.83/10шт в корпусе DIP8.
Я взял в корпусе DIP8 вместе с панельками
Характеристики ATTiny13A
- Память для программ (FLASH) — 1Кб
- ОЗУ — 64 Байт
- Число входов/выходов — 6
- Выходов ШИМ — 2
- Аналоговых входов (АЦП 10бит) — 4
- Таймер 8 бит — 1
- Напряжение питания 1.8 — 5.5В
- Рабочая частота — до 20МГц
- Потребление в активном режиме 1.8В/ 1МГц — 190мкА
- Потребление в режиме сна 1.8В/1МГц — 24мкА
Все характеристики микроконтроллера в даташите
Программирование ATtiny13
Для программирования я настроил среду Arduino IDE. Как известно, эта среда разработки может поддерживать дополнительные контроллеры. Например, в этой статье, я рассказывал, как программировать в Arduino IDE «народный WiFi» ESP8266. На сайте arduino.cc есть ветка, посещенная программированию ATTiny13 в среде Ардуино. У меня установлена версия 1.6.5. Скачиваю архив ATTiny core for Arduino. Распаковываю в папку c:\Program Files (x86)\Arduino\hardware\ и в Arduino IDE появляются дополнительные платы
Теперь загрузка программ. Объем памяти микропроцессора всего 1Кб и никакой загрузчик туда не поместится. Поэтому загрузка скетчей производится программатором по ISP. USBAsp, которым я программировал Atmega328 работать с тинькой не захотел. Нужна специальная прошивка программатора, с которой я возиться не захотел. Программировать микроконтроллер можно при помощи любой Ардуины. Для этого собираю такую схему:
В Arduino IDE выбираю «Файл->Образцы->ArduinoISP» и загружаю в Ардуино скетч программатора. Затем выбираю «Инструменты->Программатор->Arduino as ISP». Теперь можно загружать скетчи в тиньку. Следует отметить, что ATTiny13 core for Arduino содержит ограниченный набор функций Ардуино.
Применение ATTiny13
На работе у меня есть настольная елочка со световодами
В елочке стояла галогенная лампочка на 12В и моторчик, который крутит цветной круг-цветофильтр, который меняет цвет световодов. За 3 года умерли и лампочка и моторчик.
Вот я и решил восстановить эту елочку кусочком RGB-ленты управляемой ATtiny13. Съема управления лентой получилась такая:
три транзистора и резистора, линейный регулятор напряжения и собственно тинька.
Скетч представляет собой программный трехканальный ШИМ с изменением яркости по разным каналам, в результате которого лента переливается разными цветами
Скетч ATTiny13 RGB-PW…
После этого остается только закрепить плату и ленту в корпусе елочки
Белый скотч наклеен для улучшения отражения света внутри корпуса.
Теперь можно собирать корпус
И елочка готова
.
Программируем Attiny 13, 13а и 85 через Ардуинку (Arduino) (видео)
Ну, если так можно сказать, то дорос я таки до того, дабы на внешний вид пластмасса с 8 ножками слушалась меня по мере своих способностей. Каких-либо особых целей не преследовалось, а руководило мной любопытство и познание, не более… Как и что до конца не осознано, но результат получен и пора его подытожить, — в виде этой вот статьи.
Итак, написано об этом более чем много, но нет ничего более ценного, чем собственное понимание, даже уже того, что хорошо известного другими. Из этого я сделал вывод, что подытоживать свои знаниями такими вот статьями будут еще многие, дабы в последствии в виде подсказки обратиться все же к своим заметкам! Однако если они помогут еще кому-то, это лишь к лучшему. Поэтому пора начинать уже по существу!
Содержание статьи включает:
1. Кратко об Attiny 13 и 13а
2. Залив скетча в Arduino
3. Установка плат микроконтроллеров Attiny 13, 13a, 85 (установка ядра — core)
4. Видео по теме
5. Возможные проблемы
Attiny 13 и 13а микроконтроллеры
В общем, не буду приводить даташиты и очень подробно расписывать, что и где. В целом у микроконтроллера несчастных 8 ножек, само собой две это питание 4 и 8. 4 аналоговых выхода-входа, пару ШИМ ножек, и на всех них навешано еще дополнительных функций. Лучше обратиться к картинке.
* — надо обратить внимание, что PB1, PB2 и т.д. совсем не соответствует физическим ножкам 1, 2 и т.д.. Это надо помнить, подключая и программируя Тиньку.
Собственно на этой картинке показано даже как подключается Ардуино к Аттини во время ее программирования. Смотрите синие метки.
Как залить скетч для программирования через Arduino
Сам же скетч для того, чтобы Ардуино стала нашим программатором, залит прямо уже в оболочке программы Arduino. То есть подключаем Ардуино и заливаем скетч-программатора. Для наглядности тоже картинка. Именно кликнув по этому пути и можно будет залить скетч для программирования Attiny
Если выдает ошибку, то заливаем загрузчик через примеры вот так… (тоже самое, но другим путем)
Появляется (открывается новое окно) скетч из примера, его и льем в Ардуинку.
* — почитайте в скетче комментарии на английском, там могут быть ограничения по частоте работы для различных микроконтроллеров. Это надо учитывать при последующей заливке.
Теперь Ардуинка это уже не Ардуинко, а ISP программатор, который как раз работает через Ch440, именно через эту микросхему все программируется и она встречается в других программаторах ISP. Осталось лишь вместо встроенного 328 контроллера подключить Attiny 13.
Установка плат микроконтроллеров Attiny 13, 13a, 85 в программную среду Arduino
Для этого необходимо расширить список плат, дополнив штатную папку hardware архивом attiny13. Опять же для наглядности картиночку оставляю, где это все находится и куда разархивировать скачанный архив.
Теперь подключаем уже наш микроконтроллер согласно ножек в картинке выше, — синие метки. А сама принципиальная схема будет таковой.
Затем как все собрали, выбираем плату attiny13 в Инструменты>Платы>ATtiny13. (частота 128 Khz) В итоге можно заливать стандартные скетчи, надо лишь указывать правильные ножки и понимать, что функции для Аттини 13 ограничены.
Если что-то не получается залить из скетчей, то это вполне возможно из-за того, что такие функции не поддерживаются. Доступны:
pinMode()
digitalWrite()
digitalRead()
analogRead()
analogReference(INTERNAL) / (EXTERNAL)
shiftOut()
pulseIn()
analogWrite()
millis()
micros()
delay()
delayMicroseconds()
Собственно о наладке Ардуино для программирования Аттини 13, на этом всё! Далее поле вашего творчества будет лишь ограничиваться фантазиями и возможностями по их реализации.
Установка платы микроконтроллера Attiny 85
Первоначально необходимо скачать архив ВОТ ЭТОТ и залить по аналогии с тем, о чем я уже говорил, в папку hardware. Схемотехника подключения один в один как для 13 серии.
Если так не получилось, то делаем по-другому. Выбираем в меню вкладки Файл>Настройка и вставляем вот эту ссылку — https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json в окно «Дополнительные ссылки для менеджера плат». После переходим в менеджер плат и там выбираем плату «attiny by Davis A. Mellis», она должна быть в самом низу. Устанавливаем ее и у нас появляются нужные нам микроконтроллеры.
Потом выбираем нужную плату.
Делаем последние настройки по выбору и все… После этого у меня все прекрасно заливалось в Аттиньку 85.
Атинька 85 перед 13 имеет ряд преимуществ. Во-первых, это больший объем памяти, что важно для «больших» проектов. Но самое главное, как мне кажется, это поддержка канала I2С, это значит что гипотетически к ней уже можно подключать экраны для отображения информации, хотя я этого не проверял. Если кто-то подключал то, отпишитесь так ли это?
Возможные проблемы при программировании и подключении Attiny 13, 13а, 85
Как мы видим на картинке выше, у микроконтроллера ATtiny13, 6 портов ввода-вывода (PB0 – PB5) и 2 ножки по питанию (VCC, GND).
Однако, первая ножка микроконтроллера Attiny13 (а именно программный порт PB5), по умолчанию не порт ввода-вывода, а сброс (Reset) микроконтроллера.
Да, его можно переключить в порт ввода-вывода специальным фьюз битом (RSTDISBL), но тогда микроконтроллер не будет поддерживать внутрисхемное программирование (по SPI интерфейсу).
Не устанавливаете без надобности фьюз бит RSTDISBL, в противном случае ваш микроконтроллер перестанет программироваться по SPI интерфейсу (внутрисхемное программирование).
Ну и еще один трабл связанный с этим же фактом, то есть если вы вдруг повесите на 1 физическую ножку скажем подтягивающий резистор в 10кОм (или светодиод), как для входа (выхода), а использовать его не будете для этих целей, то микроконтроллер будет постоянно перезагружаться и работать не будет. Это уже относится к схемотехнике, а не программированию. В общем первую ножку лучше оставить в покое…
ATTiny13 — Программирование ядра — StudioPieters®
В ходе некоторых исследований, которые я провел в Интернете о том, как свести к минимуму использование компонентов, я наткнулся на чип ATTiny13A, который будет использоваться в проекте. Проведя еще несколько исследований, я решил реализовать свой новый проект с использованием чипа ATTiny13.
Чип ATTiny13
Купил эти чипы на Али-Экспресс. Сначала мне нужно сначала изучить вывод ATTiny13A и связать его с чипом ATTiny13A. На изображении ниже показан вывод интегральной схемы.
Чип ATTiny13A
Купил эти чипы на Али-Экспресс. Сначала мне нужно сначала изучить вывод ATTiny13A и связать его с чипом ATTiny13A. На изображении ниже показан вывод интегральной схемы.
Надрез в верхней части чипа указывает, где находится контакт 1, затем счет продолжается последовательно против часовой стрелки. Теперь давайте посмотрим на ATtiny13A.
На схеме микросхемы ATtiny13A мы видим следующие контакты, помеченные PB0, PB1, PB2, PB3, PB4 и PB5. Вы также увидите контакты GND и VIN. Они соответствуют заземлению (вывод 4 микросхемы) и входному напряжению (вывод 8 микросхемы).
СОЕДИНЕНИЯ ARDUINO NANO К ATtiny13A
Соединим вместе необходимые контакты на обеих платах.
1 x Arduino Nano (или любая плата Arduino)
1 x ATtiny13A
6 x перемычек
1 x электролитический конденсатор – 10 мкФ ~ 25 В контакты обеих плат вместе (см. вывод микросхемы) и Digital Pin 10 Arduino Nano на P5 ATtiny13A.
Подсоедините следующее (я использую Arduino Nano, поэтому вы должны принять во внимание необходимые контакты платы, которую вы используете при использовании ее в качестве
ISP).
Добавьте конденсатор 10 мкФ между RESET и GND в Arduino. Это делается для того, чтобы избежать автоматического сброса Arduino Nano, когда мы загружаем программу в ATtiny13A. Если вы используете электролитический конденсатор, убедитесь, что анод подключен к GND Arduino Nano.
Ардуино Нано | ATtiny13A | |
МОСИ | Цифровой контакт 11 | PB0 (вывод 5 микросхемы) |
МИСО | Цифровой контакт 12 | PB1 (чип 6) |
СКЛ | Цифровой контакт 13 | PB2 (вывод 7 микросхемы) |
СБРОС | Цифровой контакт 10 | PB5 (вывод микросхемы 1) |
ВКК | ВКЗ (5 В) | VCC (вывод микросхемы 8) |
Земля | ЗЕМЛЯ | GND (любой контакт GND) |
Для успешного программирования ATtiny13A нам необходимо настроить две вещи.
УСТАНОВКА ATTINY BOARDS
Откройте программное обеспечение Arduino IDE, затем перейдите к Arduino > Настройки. Вы увидите дополнительные URL-адреса менеджера досок. Добавьте туда эту ссылку, нажав крайнюю правую иконку. и объявление по этой ссылке:
https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
Нажмите OK (затем еще OK для выхода из настроек).
Теперь перейдите к Инструменты > Доска > Доска Управление р. Введите attiny в поле поиска, и вы должны увидеть MicroCore . Нажмите на нее (MicroCore от MCUDude) и установите плату . Теперь вы должны увидеть доски attiny из списка, когда вы перейдете к 9.0032 Инструмент > Доски . Прокрутите вниз, чтобы убедиться, что плата действительно установлена.
ARDUINO AS ISP
Подключите Arduino Nano к компьютеру. Перейдите к File > Examples > ArduinoISP и нажмите Arduino ISP . Затем перейдите в Инструменты > Платы и выберите Arduino Nano (или другую плату). Перейдите в Tools > Port и выберите порт, к которому подключена ваша плата. Загрузите скетч ArduinoISP в Arduino Nano (или другую плату), выбрав Sketch > Upload . На этом этапе ваш Arduino Nano готов к использованию в качестве программатора.
Примечание: В некоторых случаях вам необходимо выбрать Процессор: «Atmega328p (Old Bootloader)»
Загрузка. Набросок для Attiny13a Development Board
Убедитесь, что коннекции при описываемых при описанных при описанных при описывающихся при описывающихся при описываемых при описываемых при описываемых при описываемых при описываемых при описывающихся при описанных при описанных такими при описываемыми при описанных при описанных такими при описываемыми при описанных при описанных такими при описываемых. здесь выше. Откройте программа / скетч , который вы хотите загрузить на свой ATtiny13A. Перейдите к Tool и настройте следующее.
Плата: | «ATtiny13» |
БПК: | «БПК отключен» |
Часы: | «Внутренний генератор 9,6 МГц». |
Порт: | Выберите порт, к которому подключена ваша плата. |
Затем убедитесь, что Arduino в качестве ISP выбран в разделе Tools -> Programmer . По умолчанию ATtiny13A работает на частоте 9,6 МГц. Не используйте опцию внешнего генератора, если у вас нет внешнего источника синхронизации. Помните, что обычный двухконтактный кристалл не будет работать с ATtiny13A.
Теперь откройте Blink пример из примеров arduino и измените номер контакта с 13 на 0 и загрузите .
Вы можете увидеть вышеуказанное сообщение, если все прошло успешно. Теперь мы загрузили программу мигания на ATtiny13A и теперь давайте ее протестируем.
Тестирование ATtiny13A Мигание
Теперь пришло время для тестирования. Удалите все соединения с Arduino и возьмите источник питания. Здесь я буду использовать батарейку для питания ATtiny13A.
Вот программа мигания, работающая на ATtiny13A, для питания которой используется только аккумулятор. Вы можете выполнять множество проектов с низкой стоимостью, низким энергопотреблением и небольшим пространством. Здесь ограничивается только ваше воображение и, конечно же, количество выводов ШИМ.
ЕСТЬ ВОПРОСЫ? ОСТАВЬТЕ КОММЕНТАРИЙ ЗДЕСЬ.
ССЫЛКИ
MCUчувак. MicroCore — это легкий аппаратный пакет Arduino для ATtiny13, ATtiny13A и ATtiny13V. (2020) https://github.com/MCUdude/MicroCorey
Микроконтроллер Atmel Attiny13a, запрограммированный с использованием Arduino Ide
Автор EG Projects
Я обнаружил, что работать с atmel studio немного сложно. Atmel Studio — тяжелое программное обеспечение, требует слишком много времени на компиляцию, занимает большую часть системной памяти, библиотеки плохо объяснены, и, прежде всего, сообщество, помогающее, невелико. Поэтому я решил запрограммировать микроконтроллеры серии atmel attiny с помощью arduino ide. Arduino ide не поддерживает напрямую микроконтроллеры серии atmel attiny. Чтобы сделать серию attiny, запрограммированную с помощью arduino ide. Нам нужно установить некоторые плагины в системные файлы arduino ide. В этом посте я объясню, как установить плагины серии attiny для arduino ide и какие изменения нам нужно внести в системные файлы arduino, чтобы серия attiny распознавалась arduino ide. После установки совместимости серии я объясню небольшой проект, который я сделал с использованием микроконтроллера atmel attiny13a. Я запрограммировал микроконтроллер attiny13a с помощью arduino ide с помощью внешнего программатора usbasp. Я также запрограммировал микроконтроллер attiny13a с отдельной платой Arduino как icsp.
Для установки плагина arduino ide для микроконтроллера atmel attiny13a. Загрузите файл, указанный ниже. |
Загрузить файл |
Извлеките файл .rar. Вы получите папку с именем attiny13. Найдите каталог установки файлов Arduino. Найдите папку «Оборудование» в каталоге установки Arduino. Обычно это в C:\Program Files (x86)\Arduino\hardware. Поместите папку attiny13 в папку оборудования. Перезапустите arduino ide, и в разделе «Платы» вы найдете параметры attiny13a. Attiny13a будет указан с пятью различными конфигурациями часов. Все конфигурации используют внутренний источник синхронизации attiny. Я проверил все источники часов, и они работают нормально. Но некоторые пользователи в Интернете говорят, что испытывают трудности с созданием правильных задержек. Я проверил функцию delay() для каждого источника синхронизации, и у меня она работала правильно.
Выбор микроконтроллера Attiny13a в arduino ide | Общий вывод для attiny13a для использования с arduino ide приведен ниже. D0-D5 обозначают цифровые контакты, а A0-A1 обозначают аналоговые контакты. Таким образом, attiny с arduino ide имеет 5 цифровых контактов и два аналоговых контакта. Распиновка Attiny13a для arduino ide |
Мигающий светодиод с Atmel Attiny13A, Arduino Ide и Proteaus Simulation
Чтобы доказать, что верхняя конфигурация работает, я сделал простой проект/программу мигающего светодиода. Светодиод переключается за полсекунды. Я подключил светодиод к контакту № PB4 attiny13a. В качестве источника тактового сигнала я использовал внутренний кварц 4,8 МГц. К контакту сброса я подключил кнопку для повторного запуска микроконтроллера. Вся схема питается от элемента CR2032. Cr2032 — это батарейка типа «таблетка» на 3,3 В. Attiny потребляет очень мало энергии во время работы. Микроконтроллеры Atmel серии attiny считаются мастерами гибернации. Они могут оставаться в спящем режиме в течение многих лет с очень незначительным количеством энергии. Принципиальная схема проекта приведена ниже.
Проект Принципиальная схема Attiny13A Пример мигания.
Программирование Attiny13a с помощью UsbAsp Programmer
Для загрузки кода в микроконтроллер я использовал внешний программатор Usbasp. Attiny13a можно запрограммировать с помощью интерфейса icsp. Схема подключения аттини с usbasp программатором приведена ниже. Usbasp может программировать при Vcc = 3,3 В и 5 В. Выбрать уровень напряжения можно с помощью перемычки, установленной на программаторе usbasp. Я выбрал 3,3В. Так как я запускаю attiny с монетоприемником cr2302, рассчитанным на 3,3 В. Лучше работать на одном уровне напряжения. Но вы также можете запрограммировать его на 5v. | Перед программированием attiny13a убедитесь, что вы выбрали правильный программатор из выпадающего меню программатора. Usbasp программатор используется для программирования микроконтроллера attiny13a с помощью arduino ide |
Usbasp программатор для программирования atmel attiny13a микроконтроллер
Программирование attiny13a с использованием Arduino uno в качестве интернет-провайдера
Attiny13a можно запрограммировать с помощью arduino uno. Код можно загрузить, выполнив следующие простые шаги.
- Подключите Arduino к ПК.
- Выберите правильный порт и плату Arduino, в нашем случае «Arduino Uno».
- Загрузите на arduino скетч «ArduinoISP», приведенный в примерах. Дождитесь загрузки эскиза. После загрузки перейдите к следующему шагу.
- Выберите «Arduino as ISP» в раскрывающемся меню Programmer.
- Выберите правильный порт.