Attiny13 как подключить к программатору

Лада Калина Хэтчбек ver 1.0 › Бортжурнал › Переходник Attiny13a для Usbasp

Захотел собрать себе такое устройство Комфортные поворотники
электроникой я увлекаюсь но на начальном уровне. стал изучать что да как, и оказывается что не все так просто)
честно говоря информации пришлось прочитать много, сделать для себя какие то выводы, собраться с духом и попытаться сделать это устройство. для начала заказал в Китае программатор для AVR Usbasp

программатор пришел, детали для поворотников куплены. решил начать с программирования МК Attiny13a.
что бы подключить МК (Микроконтроллер) решил сделать панельку переходник, о чем собственно и пойдет речь.
В программе Sprint-Layout 6 потренировался развести плату, для начала сойдет.

далее начался поиск подходящей бумаги что бы все это перенести на стеклотекстолит.
остановился на матовой бумаге Lomond. в интернете много информации по этому поводу, кто то печатает на кальке, кто на подложке от самоклейки, кто то на глянцевой бумаге и т.д. я остановился на матовой бумаге на данный момент меня этот вариант устраивает, но поиски чего то лучшего будут продолжаться)
распечатал на лазерном принтере рисунок в зеркальном отображении.
Перевод рисунка делал так: вырезал стеклотекстолит, зачистил наждачной бумагой (Р1200 или Р1500) и обезжирил, прогрел советским утюгом с ровной подошвой стеклотекстолит в течении 5-10 сек. затем приложил рисунок, разгладил и продолжил греть утюгом 30-40 сек. затем бросил плату в кипяток и оставил отмокать бумагу примерно 10 минут, бумагу аккуратно снял подушечками пальцев, получилось это.

травить решил перекисью водорода и лимонной кислотой, хотя в наличии был персульфат аммония.
раствор: 100 мл 3% перекиси водорода/ 30гр лимонной кислоты/ 5гр поваренной соли.
плату нужно травить вниз рисунком, но я травил вверх рисунком иногда покачивая раствор, мне был интересен процесс.

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

для первого блина вроде неплохо))) далее выпаял из ненужной материнки разъем ISP и впаял в плату.

так выглядит плата с подключенным программатором.

так будет располагаться МК на плате и прижиматься канцелярской скрепкой.

Источник

Работа с голым МК и ATtiny

Внимание! Данный урок опирается на информацию из предыдущего урока о программаторах. Обязательно изучите сначала его.

МК/spec ATmega328 ATtiny85 ATtiny13
Flash 32k 8k 1k
SRAM 2k 512b 64b
EEPROM 1k 512b 64b
Цифр. Ног 23 6 6
Аналог. Ног 8 4 4
Таймеры 3 2 1
SPI + + +
UART +
I2C + +
Цена 95р 70р 20р

Примечание: большинство функций объединены на одних и тех же пинах.

Как вы можете видеть, чем дешевле МК, тем меньше у него возможностей. Полное подробное сравнение можно глянуть здесь.

UART и ISP

Для подключения прошиваторов к голому чипу нам нужно будет изучить распиновку (pinout) на нужный микроконтроллер. Распиновки бывают цветные и красивые (часто с ошибками), а бывают более серьёзные и правильные. Лучше всего открыть даташит на нужный МК и на второй же странице найти 100% правильную распиновку. Например для ATmega328, ATtiny85 и ATtiny13:

На данных “схемах” подписаны все функции пинов МК. Чтобы загрузить прошивку через USB-TTL, то есть при помощи “живущего в памяти” загрузчика (bootloader), МК должен иметь на борту аппаратный UART, то есть пины RX и TX. Если таких пинов нет – прошивку можно загрузить только через ISP программатор. Вы спросите, а как же Digispark? Там стоит МК ATtiny85, у которого нет UART, но прошивка загружается через USB! Верно, но там хитрые разработчики сделали не менее хитрый загрузчик, который имитирует USB, и прошивка на Digispark загружается при помощи специальной программы, которая запускается в фоне, когда вы нажимаете кнопку “Загрузить” в Arduino IDE. Резюмируя для общего случая:

Подключение программатора

Программатор, или Ардуину в качестве программатора, подключить очень просто. Смотрим распиновку и подключаем:

Например ATmega328p подключаем к USB ASP (обсуждали в прошлом уроке) 6-пин вот так:

READ  Смеситель для кухни с выдвижной лейкой как подключить

Примечание: да, другие компоненты не нужны. Новый (из магазина) МК тактируется от внутреннего генератора на 8 МГц и может без проблем прошиваться прямо так как на схеме выше.

Тиньки к тому же USB ASP подключаются так:

Для удобства я использую макетку-дигиспарк, на которой разведены пины как раз под ISP 6-пин хэдер: втыкается выпирающим “ключом” в сторону МК. В плате выведены 8 пинов, нам нужны верхние 6 (на фото видно не запаянные пины ниже штекера). Купить можно тут.

Также можно прошивать МК через Arduino (Arduino as ISP, обсуждали в прошлом уроке). Схема для ATtiny85:

Примечание: конденсатор нужен обязательно!

Подключили. Что дальше? Дальше мы уже можем работать с фьюзами через программу avrdudeprog (обсуждали в прошлом уроке), выбрав в списке соответствующий программатор и в списке МК – соответствующий МК. Также через эту программу можно загрузить скомпилированный “бинарник” – файл прошивки. Но нас всё-таки интересует работа через Arduino IDE.

Ставим “ядро”

Для того, чтобы работать с Attiny через Arduino IDE, нам нужно установить так называемое ядро, или как оно называется в самой IDE – плату. Для ATmega328 у нас уже есть стандартное ядро, например плата Arduino NANO. Но тут есть нюанс: внутренние настройки “платы” NANO рассчитаны на работу с загрузчиком (bootloader) и с внешним тактированием 16 Мгц, то есть лучше не рисковать и установить ядро, которое поддерживает работу без загрузчика и с возможностью выбора частоты, чтобы иметь полный контроль над платой. Могу посоветовать вот эти:

Как установить ядро: идём в Файл/Настройки и вставляем ссылку в окно дополнительных ссылок для менеджера плат

Далее идём в Инструменты/Плата/Менеджер плат… и находим нужное ядро. Устанавливаем

После этого в списке плат появится новое семейство плат/МК на выбор. Я буду работать с ATtiny85

Выбираем программатор из списка (я буду прошивать при помощи USB ASP). Однократно выполним Инструменты/Записать загрузчик, чтобы применить настройки тактирования:

Про остальные менюшки и варианты можно догадаться из их названия, или почтить подробное описание на GitHub по ссылкам выше.

Программирование

Итак, что же даёт нам ядро помимо выбора настроек МК? Можно программировать МК всё теми же командами, что и раньше! Мигать светодиодами через digitalWrite, измерять напряжение через analogRead и прочее прочее. Давайте напишем классический Blink:

PB3 – это номер пина, прямо как на распиновке.

Всё! Осталось загрузить прошивку. Для этого нажимаем Скетч/Загрузить через программатор:

Я подключил светодиод через резистор на 220 Ом и он мигает два раза в секунду, всё как написано.

Что следует помнить при работе с тиньками: у них мало памяти, а все вот эти Ардуино-функции являются кошмаром индуса и занимают очень много места в памяти. Если тини85 ещё как-то переживёт такие издевательства и сможет уместить в себе вполне интересный проект из Ардуино-функций, то в тини13 уже сложно уместить что-то серьёзное. Напомню: всего 64 байта оперативной памяти и 1 кб флэша! Для перехода на 13-ые тиньки рекомендуется научиться работать с МК напрямую, при помощи даташита и регистров.

Я думаю вы поняли, что в целом работа с голыми МК не особо то и отличается от работы с обычной платой Arduino, и теперь можно переходить к сложным самоделкам на базе своей платы, в центре которой будет стоять микроконтроллер. Давайте поделюсь парой советов по минимальной обвязке.

Проект на голом МК

Итак, я на личном опыте убедился, что МК способен работать вообще без какой-либо обвязки. Это был проект “Читалка файлов с SD карты” на базе ATmega328. Проект достаточно непростой: МК читал текстовые файлы с карты памяти microSD и выводил их на OLED дисплей. Никаких лишних компонентов на плате нет, МК тактируется от внутренних 8 МГц и всё работает отлично. Даже карта памяти подключена напрямую к МК =) Но в надёжных устройствах делать так не рекомендуется! Что следует помнить и делать по возможности:

Например как-то так, питание соединяем, плюс пара конденсаторов и подтяжка RST:

Схема подключения внешнего осциллятора (если нужен). Пины 9 и 10 тут соответственно XTAL1 и XTAL2

Я думаю теперь вы готовы к созданию проекта на своей плате!

Перенос МК с Arduino на свою плату

Напомню, что источник тактирования играет важную роль при загрузке прошивки. Микроконтроллер может быть настроен на тактирование от внутреннего генератора на 8 МГц, либо на тактирование от внешнего.

Это же касается переноса микроконтроллера с платы Ардуино на свою плату: на Ардуино стоит кварц. Если на вашей плате есть кварц для МК – всё будет работать сразу. Если на вашей плате нет кварца – перепаянный с Ардуино МК не будет работать и прошиваться. Для переноса МК с платы Ардуино на свою плату (без кварца) нужно настроить МК на внутреннее тактирование, об этом мы говорили в прошлом уроке. Для этого нужно подключить к плате программатор (USB-ASP или Arduino as ASP) и прошить фьюзы

READ  Как подключить провода интернета и телефона

Видео


Источник

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

Редакторский дайджест

Присылаем лучшие статьи раз в месяц

Скоро на этот адрес придет письмо. Подтвердите подписку, если всё в силе.

Похожие публикации

ESP8266 прошивка, программирование в Arduino IDE

Альтернатива Wiring для Arduino — BASCOM-AVR

Работа с Arduino из AVR Studio 4

Средняя зарплата в IT

AdBlock похитил этот баннер, но баннеры не зубы — отрастут

READ  Как подключить гарнитуру jabra bt2080 к самсунг а5

Минуточку внимания

Комментарии 52

Правильно я понимаю, что алгоритм такой (после закидывания файлов в директории)
— прошиваем любую ардуино обычную в ISP программатор
— цепляем tiny13 к этой обычной ардуине
— «прошиваем» загрузчик для выставления фьюзов
— прошивка в дальнейшем идет через ту же самую ардуину в режиме isp программатора?

По идее, если не использовать специфичных функций ардуино (типа digitalWrite), а обращаться напрямую к регистрам, код будет намного компактнее?

Я недавно снимал видео про моделирование Arduino в программе Proteus на примере Attiny13.

Видео вполне может быть интересным и полезным для многих начинающих, но есть небольшое пожелание автору:

Лучше говорить английские названия прямо так, как получается. Но прежде чем пытаться выговаривать их «правильно» следует хотя бы узнать, как на самом деле правильно 🙂 Иными словами, лучше все называть на своем языке никого не стесняясь, чем выговаривать правльно одну английскую букву из трех.

Кстати, про обучение и интересные видео — рекомендую этих парней — learn.sparkfun.com/
Ребята клевые.

Вышла новая версия «ядра» для ATtiny13 core13_19. Почему то опять с некоторыми недочётами в функциях analogWrite() и pulseIn(), вот ядро ссылка с исправленными недочётами:

Список поддерживаемых Arduino’вских функций взятый из официальной страница проекта:

map()
random()
randomSeed()
millis()
micros()
delay()
delayMicroseconds() *
analogRead()
analogWrite()
pinMode()
digitalRead()
digitalWrite()
pulseIn() (Untested)
shiftIn() (Untested)
shiftOut() (Untested)

Собственно официальная страница проекта:

При обнаружении каких либо багов пишите сюда, но всё же лучше ветку русскоязычного форума Arduino.

Спасибо, прошил тиньку) Но пришлось повозиться. На маке и линуксе нужно отключать auto-reset у arduino,
Без этого пишет что-то вроде out of sync 0x15.
После гугления обнаружился вот такой мануал:
playground.arduino.cc/Main/DisablingAutoResetOnSerialConnection

120 Ом резистор причем не помог (может потому что у меня funduino?).
А конденсатор на 10мкФ помог.

# лочит тинки, не зачёт
#attiny13int.name=ATtiny13 @ 128 KHz, BOD 2.7 V
#attiny13int.upload.using=arduino:arduinoisp
#attiny13int.upload.speed=250 # important for not losing connection to a slow processor
#attiny13int.bootloader.low_fuses=0x7B
#attiny13int.bootloader.high_fuses=0xFB # BOD 2.7 В. по умолчанию FF
#attiny13int.upload.maximum_size=1024
#attiny13int.build.mcu=attiny13
#attiny13int.build.f_cpu=128000L
#attiny13int.build.core=core13

Если вдруг кто напоролся на проблему пропадания связи с attiny после прошивки ее на частоту 128 KHz, то решение этой проблемы очень простое. Суть ее в том, что attiny13 после этого начинает работать на обозначенной слишком маленькой частоте, и для программатора она выглядит не просто как тормозная, а как мегатормозная. А раз программатору она вовремя (с точки зрения быстрого программатора) не отвечает, он ничего с ней сделать и не может.
Решение в том, чтобы затормозить программатор, чтобы он работал с такой attiny очень медленно, и attiny13 на частоте 128КГц успевала ему отвечать. В сети полно таких модифицированных скетчей из примера, искать по словам slow Arduino ISP.

Ссылки:
forum.arduino.cc/index.php?topic=89781.msg2097406#msg2097406 — Библиотека ATtiny13 library install для Arduino IDE 1.6.X (по сравнению с 1.0.X у среды поменялся немного формат, и если у вас возникают ошибки, связанные с bootloader.upload.tool, то проблема именно в версии среды).
forum.arduino.cc/index.php?topic=89781.msg2160449#msg2160449 — А тут разъяснение, что делать, если вы таки переключили attiny в режим 128КГц и теперь не можете до микросхемы достучаться: там изменения для файла boards.txt и заторможенная версия скетча Arduino ISP. У меня все сработало, и я переключил микросхему обратно из режима 128КГц. А кто-то только в этом режиме и работает, потому что, подозреваю, потребление в этом режиме еще меньше.

Обновил «ядро»(core13_20), пока что нужно протестировать, нужна ваша помощь. Добавил поддержку как старых версий Arduino IDE так и новых, теоретически должно работать.

Скачать ядро можно тут.

! Для работы с частотами ниже 1 мГц используем скетч Arduino slow ISP, но я не тестировал, так что тоже теоретически.

Если что-то не будет получатся, всегда есть верный способ — Как восстановить неправильно выставленные фьюзы в ATtiny.

P.S. За ссылки отдельное спасибо товарищу grigorym.

Привет! Воспользовался твоим ядром (версия 0.22), и при прошивке контроллера и установке фьюзов столкнулся с кучей ошибок и предупреждений.
Исправил, и заодно причесал меню (вынес выбор частоты в отдельное меню, как это сделано для ардуиновских плат).

Закинул вот сюда: github.com/orlv/at13
Изменения в файлах boards.txt и platform.txt

Насчёт ошибок в соединении с attiny13 при установке частоты ниже 1 МГц — можно использовать более свежий ArduinoISP, тот, что идёт в комплекте со средой (у меня среда версии 1.6.6).
Для этого в нём надо изменить одну строчку:

Источник

Как подключить и установить...