Всем привет, с вами канал заметки ардуинщика. В этом уроке мы научимся делать проекты на своей плате и голом микроконтроллере, программировать и прошивать его, а также покажу вам как заказать изготовление плат со сборкой на китайском сервисе jlcpcb. Видос получился очень длинный и очень плотный, поэтому не зевайте. Но сначала две крутые новости касательно проектирования и производства плат: в нашем любимом онлайн редакторе easyeda наконец то добавили вывод трёхмерной модели платы со всеми компонентами в файл. Для этого в режиме редактирования платы нажимаем экспорт - зд модель. Пока что доступен экспорт только в универсальный формат obj, но обещают добавить и другие.
Как подготовить плату так чтобы у всех компонентов были правильные модели - смотрите мой урок по easyeda на основном канале. И вторая новость - с 15 мая в течение почти 2х месяцев будет доступен скидочный 10 баксовый купон на изготовление и сборку печатных плат на jlcpcb, получить его можно при экспорте гербер файла. Как вы узнаете дальше, 10 баксов покроют вам основные фиксированные позиции в чеке на smt сборку.
Также заранее прошу прощения за слишком быстрый темп урока. Но информации очень много, она не очень сложная, а вы можете снизить скорость воспроизведения средствами ютуба. Для новых зрителей поясняю: на этом канале мы показываем и рассказываем новичкам как работать с платформой ардуино, как с точки зрения написания программы, так и с точки зрения железа, поэтому в этом видео будет рассмотрена работа с голым камушком AVR именно из программы ардуино иде с использованием дополнительных так называемых ядер для поддержки различных микроконтроллеров.
Если у вас есть какие то выдуманные предубеждения по этому поводу – не пропустите это видео и повышайте уровень своей компетенции. Начнём сразу с вопроса: а зачем. Зачем делать проект на плате и в каких случаях это нужно? Плата Ардуино является отладочной платой на базе микроконтроллера, и вкупе с ардуино совместимыми модулями и бредбордом представляет собой электронный конструктор, на базе которого можно собирать внимание прототипы электронных устройств. Некоторые колхозники умудряются паять ардуино и модули проводами и выдавать их за готовое устройство, но это всё ещё макет.
Да, ещё можно сделать плату, на которую припаять ардуино и китайские модули. Такой вариант надёжнее, компактнее и красивее проводов, но всё ещё не претендует на звание поделки года. Отладив проект в виде макета, можно взять голый микроконтроллер, датчики и сделать под него плату.
Плату можно сделать сразу размером под корпус и получится уже практически серийное коммерческое устройство, как например ваш смартфон. В каком случае ардуинщику стоит перейти с макета на такую красоту? Во 1 это конечно размер, своя плата получится компактнее в большинстве случаев. Во 2 – энергопотребление. Ни для кого не секрет, что всякие удобные штуки на плате ардуино потребляют огромный по меркам энергосбережения ток, и для автономного устройства лучше взять голый камушек. В 3 – работая с голым камнем мы можем выбрать микроконтроллер под свои задачи.
Например для мелкого проекта необязательно брать 328 мегу, если с задачей справится аттини13, которая стоит 20 рублей. В 4 – возможная экономия. Ардуино нано стоит условно 170 рублей без доставки. Голая 328 мега на том же алиэкспресс – 100 рублей. Если брать десяток.
В дорогущем российском чип и дип – 190 рублей. То есть если очень приспичит – можно и тут купить без особых потерь, потому что кококо оригинальная нано стоит 3 тысячи рублей в том же ЧИДе. В 5 – удобство разводки платы. Микросхема в корпусе под поверхностный монтаж находится на одном слое и не мешает дорожкам на другом слое. В 6 – удобство монтажа.
Даже если делать свою плату прототип лутом, то припаять на неё чип в 100 раз удобнее и быстрее, чем сверлить три десятка отверстий под ардуину, а потом их запаивать. В 7 – мелкосерийное производство готовых или почти готовых плат, для себя если нужно несколько или на продажу. На том же jlcpcb можно заказать изготовление плат с распайкой внимание smd компонентов. То есть ардуину вам никто не припаяет, а вот ту же 328 мегу припаяют за 100 рублей, тиньку 13ю – за 35 рублей, а чем больше партия – тем дешевле. К этому вопросу мы вернёмся ближе к концу этого урока. И в 8 – конечно же это понты.
Такую плату не стыдно показать, не стыдно продать, да и это просто красиво с точки зрения технологии и таким можно уже гордиться. Таким образом на плате можно реализовать готовое устройство, которое прошло предварительные тесты в виде макета, но в виде макета его видеть не хочется. Перейдём к делу. Есть всего три основных момента, которые нужно обдумать для своего проекта на голом камне, это источник и частота тактирования, напряжение питания и способ прошивки.
Все три момента связаны между собой и это нужно понимать. Вернёмся самому первому уроку из цикла уроков и вспомним, что есть на плате ардуино помимо микроконтроллера. Помимо кучи пассивной рассыпухи можно выделить кварц, обеспечивающий тактирование. Стабилизатор напряжения на 5 вольт.
Юсб-ттл преобразователь для загрузки прошивки и отладки. И ещё вот эти 6 пинов выведены отдельно для прошивки через icsp программатор. Все три момента здесь прослеживаются.
ТАКТИРОВАНИЕ Что касается тактирования. У микроконтроллеров AVR может быть несколько способов тактирования на выбор. Это тактирование от кварца, как например сделано на плате ардуино. Это тактирование от внешнего генератора, то есть непосредственно от квадратного сигнала, который подаётся на мк от другого устройства. И это внутренний источник тактирования, он бывает на 8 мгц, бывает на 128 кгц, и бывают некоторые другие, например 9.6 мгц у аттини 13.
Разные микроконтроллеры поддерживают разные способы, например мега328 поддерживает все, в том числе осцилляторы и резонаторы. А вот тини 13 поддерживает только внешний генератор и внутренний источник, аттини85 поддерживает также кварц, эту информацию можно найти в даташите на конкретный камень. Внешний генератор кстати можно сделать из обычного кварца вот по такой схеме. Что касается внутреннего источника, то это означает что микроконтроллер способен работать сам по себе, ему не нужны никакие дополнительные компоненты. Как пример мой проект электронной шпаргалки.
Если хочется поставить кварц, берём например полноразмерный выводной резонатор, как сделано на хороших платах ардуино, и подключаем его к пинам xtal1 и xtal2. Здесь нам понадобится такая штука как распиновка микроконтроллера, выглядит она вот так. Если вы работаете в редакторе изиеда, по которой на основном канале у меня есть огромный подробный урок, ссылка будет в описании, то в ней можно в режиме схемы сразу найти в поиске нужный микроконтроллер, который китайцы смогут вам припаять, находится он вот в этом блоке результатов поиска, jlcpcb assembled. Здесь можно сразу посмотреть цену, наличие на складе и статус, обычный или дополнительный компонент. За установку дополнительных компонентов сервис берет дополнительные пару баксов за счет того что им приходится дополнительно загружать данные компоненты в машину установщик.
Вставляем на схему и сразу видим нужные пины xtal. Большие кварцевые резонаторы можно найти например в библиотеке lcsc в блоке dip crystal resonators. Конечно осцилляторы чуть лучше, но они стоят в 10 раз дороже. Подключаем.
Кварцу необходимо поставить два конденсатора с номиналом от 15 до 25 пикофарад, обычно ставят 22 пф, они также самые распространённые в магазинах. Выбираю например в корпусе 0805. Свободные ноги конденсаторов подключаем на землю. И всё. Конвертируем схему в плату.
И ставим кварц и конденсаторы максимально близко к нужным выводам микросхемы. Всё, мы с вами обеспечили тактирование. Ещё один момент, в блоке керамических резонаторов можно найти варианты с конденсаторами, которые уже стоят внутри корпуса, то есть дополнительные конденсаторы уже не нужны и достаточно подключить пины xtal и землю. На плате такой резонатор будет выглядеть вот так и ставится опять же максимально близко к пинам. К слову, на китайских ардуинах стоят именно такие резонаторы, вот он подключен к xtal и земле, и всё. Так что если мы делаем свою плату, а донором будет ардуино нано – можно сделать плату под этот мелкий кварц и взять микроконтроллер вместе с кварцем прямо с платы ардуино.
Но, если мы хотим чтобы китайцы сами его припаяли, искать нужно в блоке jlcpcb assembled. На данный момент здесь нет резонаторов со встроенными конденсаторами, есть только обычные. Найдём например на 16 мгц, самый дешёвый.
Втыкаем, подключаем. Добавляем конденсаторы прямо из базовых компонентов, например в корпусе 0805 и указываем ёмкость 22pf. Это нам пригодится дальше. ПИТАНИЕ Что касается частоты тактирования, то она привязана к питанию.
Например используем 328 мегу, открываем даташит. Сразу видим, что максимальная частота 16 мгц. Ищем в поиске Speed Grades, видим вот такой график отношения частоты и напряжения питания.
Если устройство будет работать от 5 вольт, можно тактировать камень от 16 мгц. Если устройство будет работать от батареек, например 3 вольта, то лучше поставить кварц на 8 мгц, иначе работа будет нестабильной или микроконтроллер вообще не запустится. Если тактирование будет без кварца, то есть от внутреннего источника 8 мгц, то питаться можно как от 3, так и от 5 вольт.
Думаю здесь всё просто и понятно. Далее, по питанию практически обязательно нужно поставить керамический конденсатор с ёмкостью 0.1 микрофарад, для сглаживания мелких шумов питания.
Добавляем. Соединяем все ноги питания и земли в одну сеть и подключаем конденсатор. Туда же, параллельно, рекомендуется ставить электролит или тантал с ёмкостью от 20 до 100 мкф, чтобы сгладить крупные помехи питания, но я ставить не буду. Также для надёжной работы очень рекомендуется подтянуть ногу rst внешним резистором на 10 ком к питанию, вот таким образом, например в таком же корпусе 0805. Работать будет и без него, но из за помех мк может случайно перезагрузиться.
Если на плате нужна кнопка перезагрузки микроконтроллера, как например на ардуино, то эта кнопка подключается к пину rst и земле. Я кнопку делать не буду. Добавлю для примера колодку питания из библиотеки базовых компонентов. Обновляем плату. Что касается разводки, то здесь правила простые.
Конденсатор по питанию, как и кварц, нужно ставить максимально близко к выводам микросхемы. Выводы питания микросхемы, если их несколько, нужно соединить максимально короткими и толстыми дорожками. Плюс питания также рекомендуется соединять внутри футпринта, то есть под микросхемой. А всю плату залить земляным полигоном, вот таким образом. И вот такая у нас получается плата. Дорожки питания максимально короткие, земляной полигон максимально хорошо соединяет выводы gnd, компоненты расположены плотно, вот так всё и должно быть.
Что касается проектов на аттини со внутренним тактированием, то там всё проще, плата может выглядеть вот так. Перейдём к прошивке. ПРОШИВКА На канале было уже несколько уроков по работе с программатором, из которых вы должны помнить, что прошивка возможна в любом случае при помощи icsp программатора, например юсбасп, который стоит сотку. А также можно прошиваться по юарту, при помощи юсб-ттл преобразователя. Они также продаются в виде вот таких юсб свистков. Для прошивки по юарту, в микроконтроллер при помощи программатора должен быть прошит загрузчик, то есть для работы с голым камушком нам в любом случае понадобится программатор.
Ссылку оставлю в описании под видео. Для удобного подключения можно вывести на плату 6 пин разъём, распиновка у него вот такая. Эти пины просто подключаются к соответствующим по названиям пинам микроконтроллера прямо на схеме.
Я себе сделал готовый компонент, вставляю и подключаю. Обновляю схему и вот он наш разъём. Если хочется добавить возможность загрузки через юсб-ттл, придётся вывести ещё пины юарта, можно сразу с питанием. Вставляем 4 пин разъём и подключаем к питанию и rx tx на микроконтроллере.
Важный момент: не у всех микроконтроллеров есть возможность прошиваться через загрузчик, например для 328 меги я так сделать могу, а вот у аттини13 в принципе нет таких пинов и прошить её можно только программатором. То есть минимальная схема будет выглядеть вот так. Если не хочется дырявить плату штекером, можно вывести 6 пинов для прошивки например в одну линейку при помощи стандартного штекера. И на печатной плате превратить отверстия в площадки, к которым можно будет припаяться для загрузки прошивки.
В принципе это всё, микроконтроллер на такой плате будет стабильно работать и удобно прошиваться. Давайте в качестве примера добавим пару светодиодов, чтобы было на чём показать работу микроконтроллера. Пару светодиодов китайцы паять не хотят, поэтому поставлю в схему любой светодиод в корпусе 1206 и припаяю сам, у меня есть. Не забываем про резисторы.
Напоминаю, это урок, я просто делаю плату чтобы показать вам как это делается, всё чисто для примера. Плату можно развести автоматическим трассировщиком, который сам проложит все дорожки, но мне нравится делать это вручную, хорошо тренирует мозги. Если хочется сделать така как сделано в ардуино, то есть загружать прошивку прямо в юсб гнездо на плате, понадобится юсб ттл преобразователь. Китайцы ставят на свои ардуино платы микросхему ch340, и эту микросхему jlcpcb могут нам припаять. Нужно подключить её к выводу юарт микроконтроллера, а также к пину ресет, ну и добавить немного рассыпухи и кварц на 12 мгц для тактирования ch340.
Ч этого делать не буду, но чтобы вы понимали, это тоже делается очень просто. Плату можно изготовить любым наколеночным способом, например лутом или фоторезистом, припаять компоненты феном или паяльником, но в этом уроке я хочу показать вам как заказать плату у китайцев, чтобы они припаяли все компоненты. Это делается очень просто. Заходим на jlcpcb в раздел smt. Смотрим требования к платам.
Китайцы могут припаять smd компоненты только на одну сторону платы, плата должна быть 2, 4 или 6 слойной с соответствующей толщиной и цветом маски. Для двухслойной платы минимальный размер 20х20 и максимальный 480 на 320 мм. В принципе это всё. Вернёмся в редактор и убедимся, что наши платы соответствуют минимальному размеру. Плату с тинькой придётся даже чуть уменьшить.
Если нужна куча мелких плат – можно сделать панелизацию, делается она парой кликов мышкой и это я показывал в уроке по изиеда. Также при проектировании желательно сразу выбирать компоненты из библиотеки jlcpcb assembled, чтобы потом не искать их отдельно, это я уже сделал. Далее нам понадобится гербер файл, нажимаем экспорт гербер, проверяем разводку на ошибки, сохраняем. Заходим на jlcpcb, логинимся, заходим в корзину, создаём заказ и перетаскиваем гербер. Плата загружается. Если на предпросмотре плата выглядит неправильно, не обращайте внимания, там бывает отображается неправильно.
Если плата определилась как однослойная, нужно всё равно поставить 2 слоя, иначе магия не сработает. Цвет нам доступен чёрный и зелёный, выберу чёрный. Остальные параметры не трогаю.
Нажимаем smt и выбираем сторону платы, которую нужно будет собрать. У меня это верхняя сторона. Выбираем количество, можно собрать все платы, а можно только часть из них. Ставим галочку и переходим к следующему шагу. Здесь от нас потребуют два файла, BOM – бил оф материалс, то есть список компонентов, и файл позиционирования элементов на плате.
Возвращаемся в редактор, нажимаем экспорт бом, и сохраняем файл. Если ваша схема полностью соответствует плате, никаких действий больше делать не нужно. Здесь же нажимаем вот этот значок и сохраняем файл позиционирования. Всё, перетаскиваем их в браузер.
На следующем шаге проверяем, как распознались указанные в бом компоненты, есть ли они в наличии и всё такое. Можно отказаться от сборки отдельных компонентов, сняв выделение вот этой кнопкой. Можно добавить неопределённые компоненты, например резисторы и конденсаторы. У меня не распознались кондеры на 22 пик, выбираем из поиска с нужным корпусом. Точно также можно заменить другие компоненты, главное чтобы они совпадали по корпусу. Нажимаем далее и видим предпросмотр платы.
Важный момент: предпросмотр может отображаться неправильно, но корпуса компонентов должны соответствовать выбранным. Китайцы потом вручную проверяют расстановку и уже на этапе выполнения заказа можно будет посмотреть реальный вид будущей платы. Что касается цены – setup fee это плата за загрузку вашей партии плат в станок. То есть делаем ли мы 2 платы или 200 – эта цена не изменится. Stencil – это маска, по которой наносится паяльная паста, цена также фиксированная для любой партии плат, то есть чем больше будет партия, тем дешевле будет отдельная плата, потому что цена условно делится на все платы. Тут можно видеть общую стоимость всех компонентов в партии.
Дополнительная плата за установку extended компонентов, про что я говорил ранее. И стоимость сборки, она определяется по количеству точек пайки и стоит как можно видеть очень и очень немного. Общая цена оказалась достаточно высокой, во всём виноваты дополнительные компоненты. Я забыл что хотел припаять светодиоды сам, давайте их уберём.
Всё, оформляем заказ и далее как при обычном заказе плат, выбираем адрес, тип доставки и всё такое. Точно так же добавляю платы с тиньками, они будут зелёного цвета. Стоимость практически такая же из за этих самых 7 баксов за партию и установки дополнительных компонентов.
Как вы могли заметить, заказ изготовления партии плат со сборкой в наше время упрощён до нескольких кликов мышкой, и это я считаю очень круто, но понятное дело не очень дёшево. Пока ждём платы, займёмся настройкой программы. Для работы с разными микроконтроллерами понадобятся дополнительные так называемые ядра, список самых полезных можно найти в текстовой версии этого урока у меня на сайте. Также обязательно посмотрите все уроки по работе с программатором, которые выходили на канале, они прикреплены к уроку на сайте. Например хотим работать с аттини 13. Открываем ядро микро кор и видим полную документацию по работе с ним.
Чтобы установить ядро, нужно всего лишь скопировать вот эту ссылку в блоке установка. Также эту ссылку я выделил в уроке к каждому ядру. Зайти в настройки иде и вставить ссылку вот в это окошко. Теперь в менеджере плат появится соответствующее ядро, жмём установить.
И это всё. В списке плат у нас появилась микрокор, выбираем аттини13. Сейчас займёмся таким вопросом как фьюзы. Фьюзы, или фьюз биты и фьюз байты являются низкоуровневыми настройками микроконтроллера, которые можно изменить только при помощи программатора. Каких настроек? Например рассмотренный ранее способ тактирования задаётся во фьюзах.
У разных микроконтроллеров разный набор таких настроек, но почти все я описал в уроке на сайте. В ардуино иде значения фьюз байтов заданы в файлике boards.txt, который лежит в папке с программой. Это означает, что разработчики платформы сами прописали настройки под свою плату, и менять их там мягко говоря неудобно.
Ардуиновские фьюзы прошиваются нажатием на кнопку записать загрузчик, при этом происходит и запись выбранного загрузчика, и запись фьюзов. Если вам вдруг хочется руками потрогать фьюзы, то можно использовать бесплатную программу аврдудпрог, в которой можно прочитать текущие фьюзы, поменять нужные и загрузить обратно. Сегодня мы этим заниматься не будем.
Почему? Рассмотрим установленное ядро для аттини13. В отличие от стандартного ядра, здесь можно выбрать источник и частоту тактирования, настроить бод и настроить очистку епром, то есть ровно всё то, что можно настроить фьюзами. Но вместо того чтобы копаться в документации и самому выставлять нужные биты, мы просто выбираем нужную конфигурацию из меню и жмём записать загрузчик. Всё, выбранные фьюзы прошиты.
Никакой загрузчик само собой прошит не будет, потому что на аттини13 он не предусмотрен. А что если мы хотим работать с голой мегой328 и настроить её по другому, не как за нас сделали ардуино? Качаем мини кор. Выбираем 328.
И видим кучу настроек для своего чипа. Полное их описание есть на странице ядра. А вот тут уже можно выбрать загрузчик, это к слову оптибут, лёгкий и быстрый в отличие от стандартного ардуиновского. Можно выбрать вариант без загрузчика, тогда микроконтроллер можно будет прошить только программатором, но он будет включаться без задержки. Также для 328 меги мы со вторым ведущим сделали своё ядро, называется GyverCore. Оно является облегчённым и оптимизированным стандартным ядром и также предлагает расширенные настройки мк без ручного редактирования фьюзов.
Что касается ксенофобии. Очень многие считают, что библиотека ардуино очень тяжёлая и в принципе не имеет права на существование, мол программировать нужно на каком то там чистом си и всё будет хорошо. Но если вы откроете любую библиотеку или файл ядра, то как раз таки и увидите в ней работу с регистрами. Всё потому что библиотеки облегчают программисту жизнь и ускоряют написание программы.
Стандартное ядро ардуино да, я согласен, местами написано не очень оптимально, но это ещё никому не мешало. Возьмём всё ту же аттини13, у неё всего 1кб флэш памяти и 64 байта оперативной. Многие считают, что программировать этих крошек можно только в атмел студио и только на ассемблере, но это полнейшая чушь. Ядро микрокор, на которое я уже ссылался, написано не компанией ардуино, а энтузиастами, причём весьма не глупыми.
Весь код вылизан и оптимизирован, в нём нет ничего лишнего. Пустой скетч весит 40 байт. Давайте для примера покажем свои огромные понты и знание регистров и дёрнем пином как говорится напрямую. 44 байта.
Теперь сделаем то же самое, используя богомерзкий дигиталрайт. Батюшки, занимает столько же! Невероятно. Также в ядре микрокор реализован миллис, причём реализован на таймере вотчдога, что очень хитро и забавно. А ещё разработчик прикрутил сюда работающий на приём и отправку юарт, написанный на ассемблере и весящий до смешного мало. И программный тиниСПИ с полной поддержкой всего ардуиновского апи для полной совместимости скетчей.
Это круто, полноценный набор инструментов для среднего проекта. Также напоминаю, что в ардуино иде можно сделать вот так: стираем всё, пишем инт меин и теперь никакие богомерзкие ардуино функции нам недоступны и можно кодить всё самому с нуля. И мне как раз приехали платы, давайте на них взглянем. Сейчас у jlcpcb синие коробочки.
И в подарок как обычно идёт милая безделушка. У меня их уже целая коллекция. Так, открываем.
Тиньки. Две собранные, остальные просто платы. Меги, аналогично. Кстати один момент. Китайцы добавляют на платы два отверстия для позиционирования и фиксации плат во время сборки, вот они.
Если вы хотите сами выбрать, где должны быть эти отверстия, то вот тут на странице заказа есть инструкция. Давайте рассмотрим платы под микроскопом. Ух, мега, атмеловская. Давайте посмотрим пайку. Выглядит хорошо. Хотя местами кажется что недогрели.
Следов флюса нет, видимо его отмывают. Микроскоп приближает очень сильно, вот это самый минимум, то есть плата даже не вмещается в кадр. Зато видно кстати, что шелкография имеет толщину, как будто прям майонезом намазали. А вот максимальное приближение. Можно прочувствовать, как паялся резистор.
А вот здесь отлично видно границу паяльной маски, которая снята вокруг площадок. Так близко свои платы я ещё ниразу не видел, довольно интересно. Микроскоп я брал на алиэкспресс, ссылочка будет в описании под видео, вдруг кому пригодится.
Сейчас мне нужно объяснить вам один важный момент с тактированием. Если микроконтроллер настроен на внутренний клок, то он запустится в любом случае. Если микроконтроллер настроен на внешний источник, то он сможет запуститься только в том случае, если этот источник подключен. Почему это важно. Если вы возьмёте камень с платы ардуино, настроенный на внешний клок, и припаяете его на свою плату, где внешнего источника нет - микроконтроллер нельзя будет даже прошить, потому что он не включится.
Поэтому сначала нужно при помощи программатора настроить его на внутренний клок, вручную фьюзами или в настройках ядра, и только после этого включать паяльный фен. Также если на вашей плате нет кварца и вы случайно установите фьюзы на внешний клок - микроконтроллер перестанет работать, надеюсь это понятно. В то же время все новые микроконтроллеры, если вы покупаете чип в магазине или вам его паяют китайцы, по умолчанию настроены на внутренний клок. То есть куда бы вы его не припаяли, он в любом случае сможет запуститься или прошиться программатором. Именно так у нас сейчас и есть, если я подам питание на плату, микроконтроллер запустится тут на внутренних 8 мгц, а тут - на 9.6. Начнём с тиньки, тут всё проще.
Напомню что я оставил площадки чисто в качестве примера, сейчас же для удобства припаял к ним гребёнку. Подключаю программатор, у меня это usbasp. Выбираю его в меню. Драйверы у меня уже установлены и девайс определяется в системе. Подробнее об этом мы говорили в отдельном уроке.
Давайте проверим, правильно ли всё подключено и работает. Я настраиваю параметры по умолчанию и жму записать загрузчик. Никакой загрузчик не записывается, но параметры применяются.
Видим что запись успешно завершена, значит как минимум микроконтроллер рабочий, и подключение разведено правильно. Далее мы хотим помигать светодиодами. Давайте вернёмся к схеме и перепишем, на каких ногах сидят светодиоды, сразу задефайним. Так как у нас с вами не плата ардуино, никаких D пинов у нас нет, и нам проще обращаться к ногам напрямую по именам как они есть на распиновке, так можно.
То есть создали константы. Далее делаем пины выходами. И давайте мигать всеми по очереди, пока сделаем это по тупому, просто убедимся что всё работает. Жмём скетч/загрузить через программатор. И оно работает, поздравляю.
Код занимает 94 байта, что уже 10% памяти. Давайте немного оптимизируем программу, засунув номера пинов в массивы и сделав всё мигание циклами. Визуально программа стала меньше, но занимает уже 178 байт. Дело в том, что когда мы перешли к массивам, компилятор потерял часть возможностей по оптимизации.
Почему это происходит, читайте в текстовом уроке по оптимизации кода. А так по сути да, компактнее всего будет писать программу на максимально низком уровне, но для простых проектов более чем достаточно работать с микрокором. Переходим к атмеге. Я также припаял все ножки и светодиоды. Давайте подключим программатор.
Я буду использовать миникор. Атмега 328р. Поставлю внутреннее тактирование 8 мгц, всё остальное по умолчанию.
Пока поставлю без загрузчика. Нажимаю записать загрузчик, видим что всё прошилось значит всё в порядке. Откроем нашу схему и посмотрим, куда подключены светодиоды. ПД567.
Используем тот же скетч, но поменяем номера пинов. Загружаем через программатор. Супер! Всё работает. Далее, у нас с вами припаян кварц, так что давайте переключимся на 16 мгц. Выбираю внешний источник, прошиваю настройки.
Скетч у нас затёрся, поэтому прошиваем его ещё раз, так же через программатор само собой. Всё работает, значит кварц у нас разведён правильно и микроконтроллер сейчас тактируется от него. Далее, допустим мы хотим общаться с платой по сериал, для этого понадобится любой юсб ттл свисток, например такой. Подключаемся к нашим рхтх пинам, причём тх в рх, а рх в тх. Пока что мы не можем прошиваться через юарт, поэтому добавим в скетч вывод в сериал и прошьёмся программатором. Подключаю юсбттл, питается плата также через него.
Открываем порт и видим, что плата нам отправляет данные. Теперь допустим мы хотим сделать так, чтобы скетч прошивался через юсб ттл, как это сделано у ардуино. И вот для этого нам нужно записать загрузчик. Выбираем первый из списка и прошиваем. Второй для другой модели микроконтроллера. Теперь наша плата готова прошиваться по юсб.
Но не всё так просто, потому что непосредственно перед загрузкой прошивки микроконтроллер должен быть перезагружен. Для этого у всех юсб ттл выведен пин DTR, который через конденсатор на 0.1мкф подключается к пину ресет микроконтроллера.
Мы с вами на плате этого не сделали, но без проблем можем добавить отдельно. Да, прямо вот так, и на пин DTR. Теперь если мы откроем монитор порта, микроконтроллер перезагрузится и это будет видно, светодиоды перестанут мигать на какое то время. Я подключаю теперь юсб ттл свисток, выбираю его порт куда он подключен.
И теперь могу прошиваться как обычно, при нажатии на стрелочку. Всё, загрузка завершена и всё работает. Далее, допустим мы хотим использовать стандартное ядро ардуино.
Выбираем его. Для нано. Оставим новый загрузчик, вот этот. Выбираем юсбасп. Подключаем программатор. Прошиваем загрузчик.
А теперь можем снова прошиваться по юсбттл, нажимая на кнопку со стрелочкой. Ну чтож, мы с вами рассмотрели создание платы на микроконтроллере с самого нуля, заказ изготовления у китайцев, работу с программатором в ардуино среде, ну и конечно же с кайфом помигали светодиодами. Надеюсь видео было для вас полезным. Если я допустил какие то ошибки, то в закреплённом комментарии под видео я оставлю работу над ошибками. Спасибо за внимание, всем пока.
2021-05-17