Механический дисплей на AVR с нуля. Часть 0: программатор(ы)

в 17:03, , рубрики: avr, diy или сделай сам, electronics, LED, Электроника для начинающих, метки: , , , ,

Спасибо ресурсу easyelectronics.ru и лично DI HALT, большинство информации черпал оттуда, здесь также будет проскакивать немного материалов с данного ресурса. Для того, чтобы избежать излишнего повторения, рекомендую начать именно с него, там понятным языком расписаны такие страшные слова, как FUSE-биты, ISP программирование или сдвиговый регистр. Предполагается, что читатель диванный теоретик обладает небольшой теоретической базой

Самое лучшее обучение – практика. Именно поэтому, когда я первый раз увидел статью про микроконтроллеры мне захотелось соорудить что-нибудь «эдакое». Первое, что попалось на глаза было видео:


Ну, значит, начинаем! (Сразу предупреждаю, устройство еще не закончено, одна из целей данного цикла статей – мотивация себя любимого ленивого).

Сразу рассказываю технические характеристики своего будущего устройства:

  • «Мозг» — ATmega8A-PU, частота 16 Мгц
  • Скорость вращения – часть, которая будет вращать все это пока не готова, но прошивка в теории должна позволять 15-9000 об/мин. При этом одно из отличий данной реализации в том, что скорость не жестко зашита в прошивку, а вычисляется динамически.
  • «Матрица» — 32 smd светодиода желтого цвета (какие нашел, думаю синие смотрелись бы интереснее)

С LED-драйверами разбираться не хотелось, да и в учебных целях в связи с большей распространенностью зажигается все это счастье через:

  • 4 сдвиговых регистра 74hc595
  • Прошивка – только ассемблер, только хардкор!

(Не обращайте внимания, я буду много ныть по ходу изложения, как трудно мне давались различные компоненты. Это действительно так – в своем довольно-таки большом городе не нашел ни одной радиоточки, все заказывал через интернет, но даже так в Белоруссии особо не разгуляешься)

Итак, начнем. Это первая часть серии статей, посвященной изготовлению своего «велосипеда», будет посвящена изготовлению очень нужного инструмента – программатора. С помощью него производится прошивка микроконтроллера.

Программатор раз. «Громов»

Один из простейших по своей конструкции, подробную инструкцию по изготовлению можно найти, например, здесь easyelectronics. У этого программатора есть один очень существенный недостаток – работа через COM-порт. Те, для кого этот факт недостатком не является, могут смело закрывать статью и ждать следующей части, которая будет целиком и полностью посвящена технической части изготовления подвижной составляющей. Итак

Программатор два. USBTinyISP

Нам нужен программатор, который лишен данного недостатка. К счастью, человеческая цивилизация уже достигла той отметки, когда стали появляться программаторы, работающие через USB. Есть несколько известных схем, немного поискав, могу назвать USBAsp на контроллере ATMega48 или ATMega8. Но тогда у меня их не было, была только ATtiny2312 – и о чудо, для нее тоже есть готовое решение! По непонятным мне причинам этот программатор не так известен, как предыдущий, хотя требует для своего изготовления более дешёвый микроконтроллер. (Вы еще не почувствовали подвох? Для работы такого программатора необходимо сначала научить его работать, т.е. прошить, например… программатором Громова. Но это разовая операция, если у вас нет COM-порта, можно вылезти из своей берлоги и сходить к своему более счастливому другу). Ссылка на оригинальную страницу проекта: ladyada.net. Там лежат файлы для двух версий программатора, я собирал первую, так как в ней меньше деталек.

Принципиальная схема довольно-таки простая:

Механический дисплей на AVR с нуля. Часть 0: программатор(ы)
И разводка платы:

Механический дисплей на AVR с нуля. Часть 0: программатор(ы)

Я ее перерисовал для односторонней печатной платы и своих smd конденсаторов, правда получилось не так компактно:

Механический дисплей на AVR с нуля. Часть 0: программатор(ы)

Список необходимых деталей:

  • ATTINY2313-20PU
  • Кварц на 12 Мгц
  • Конденсатор на 100 nF (у меня smd, в оригинале с ножками)
  • 2 конденсатора на 22 pF (только в моей реализации, я так понял в оригинале они объединены с кварцем)
  • Резистор 10 КОм
  • 5 резисторов на 1,5 КОм
  • 2 резистора на 27-68 Ом
  • 2 светодиода
  • 2 стабилитрона на 3,6 В
  • Штырьки

Учить Вас травить платы я не буду, не маленькие. Сам делал с помощью утюга. После изготовления программатор необходимо прошить, для этого ставим джампер JP5 (self pgm, pgm) и подключаем прошивающий программатор к любому из двух наборов пинов (на этом программаторе таких набора два — 6 и 10 штырьков, под самые популярные разъемы). После прошивки необходимо установить драйвер usb на компьютер, и все — на сайте проекта написано, что AvrDude поддерживает этот программатор из коробки. Сам я использую программу USBtiny500 — мост UsbTinyIsp <-> STK500, которая позволяет прошивать прямо из AVR Studio, выбрав в списке программатор STK500. Правда, для такого использования необходимо еще установить и настроить программу com0com для виртуальных com портов, вот инструкция. И, напоследок, немного фото (извините за качество):

Механический дисплей на AVR с нуля. Часть 0: программатор(ы)
Сам программатор

Механический дисплей на AVR с нуля. Часть 0: программатор(ы)
Механический дисплей на AVR с нуля. Часть 0: программатор(ы)
То, что уже сейчас готово, даже лампочками моргает :)

Ссылки:

Страница загрузки файлов проекта. Там можно взять драйвера (я ставил версию «Windows USBtinyISP driver built with libusb v1.12»)
Прошивка для программатора. Файл /spi/main.hex
Использование программы AVRDude для прошивки и ее установка
Официальный форум

P.S. Моя первая статья, не ругайтесь :)
P.P.S. Буду очень рад, если кто-нибудь поможет достать на эти самые штырьки специальные гнезда (BLS-1), сам уже отчаялся найти.
P.P.P.S. Если кому интересно, могу скинуть свой вариант разводки в формате lay, скажите только куда

Автор: kirias

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js