Posted by lex232 on

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Вот вы написали программу, и залили её в свой UNO. Всё великолепно работает, но такую громадную железку не запихнуть в миниатюрный корпус. Да и вдруг, вы хотите сделать 100 таких устройств, а зачем вам увеличение себестоимости, ведь на платах Arduino куча ненужного барахла.

Ну что же, попробуем. Для начала, как мы помним, в самых распространённых платах Nano и Mega, используется камень AtMega328P. Логично, что для его запуска, нам нужно подать питание на него. Для этого здесь достаточно много пинов VCC и GND, особенно в планарных типах корпуса. Связано это с топологией чипа на уровне производства, ведь каждый пин контроллера держит токовую нагрузку, поэтому МК должен быть запитан равномерно со всех сторон

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Пин AREF отвечает за опорное напряжение АЦП, туда можно подать напряжение, относительно которого вы хотите читать результаты, или, если это будет 5в, или 2.5 от внутреннего делителя, то подтянуть конденсатором к питанию. Также, по классике, на линию питанию нужно повесить конденсаторы для сглаживанию питающего напряжения — от этого зависит стабильность микроконтроллера.

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Знаете, на arduino, есть такая кнопка — Reset, от которой можно перезагрузить МК. Это такой выход i/o, на который на который вроде бы можно повесить периферию, но с большими ограничениями. Поэтому, если вам хватает ног, лучше не трогайте этот пин. Изначально он подтянут внутренним резистором, но лучше, для надёжности и стабильности сделать внешнюю подтяжку резистором 10кОм. Перезагружать готовое устройство нужды особой нет — кнопку ставить не будем.

Смотрите также:  Модернизируем монитор для робота waybot
Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Теперь нужно разобраться с тактированием. Arduino работает на частоте 16Мгц, т.е. от внешнего кварца. Если вы продолжаете работать на этой частоте, то этот кварц нужно установить на создаваемую плату, вместе с конденсаторами 22пФ.

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Но если точность вычислений вам не сильно нужна, а хочется сэкономить в размерах, как иногда мне, то кварц можно вообще не ставить, а тактироваться от внутренней RC цепочки с 8Мгц. Как скомпилировать прошивку в arduino с другой частотой в 8Мгц, я расскажу позже. А пока рассмотрим самую важную часть — как программировать то голый микроконтроллер? Ведь usb выхода у него нет. Есть разные пути, но самый простой — использовать внутрисхемное программирование SPI. И купить дешёвый программатор USB ASP. Мой выглядит так, у него не подписаны контакты

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Нарисовал удобную распиновку, если смотреть со стороны контактов. Для SPI нам важны 5 контактов, но я обычно беру и питание с программатора — MISO, MOSI, SCK, RST, GND

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Также у меня лежит самодельный UsbAsp, но он громоздкий, и у него не сделан вывод 3.3в, поэтому я его давно не использую

Смотрите также:  Формирование сигнала
Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

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

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Теперь если подать питание, и подключить выводы программатора MOSI, MISO, SCK, RESET, GND то можно приступать к программированию. Как помните, из предыдущей статьи, где мы рассказали как достать HEX файл из среды Arduino, IDE делает два файла — *.hex и *with_bootloader.hex. Загрузчик нам не нужен, поэтому будем использовать обычный *.hex. Есть один нюанс — при покупке голого кристалла, он запрограммирован на RC цепочку 1Мгц. Да и вообще у atmega, есть система фьюз-битов. Выглядит это обычно не очень понятно, но конечно в среде Arduino всё это вырезано, чтоб не смущать новичков. Чтобы добраться до этих конфигураций, полезно будет скачать программу AVRDUDE. Главное окно выглядит так, здесь нужно сразу выбрать нужный МК

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Переходим во вкладку Fuses — здесь, чтобы не наделать бед, а если вы запишите неправильные данные, контроллер можно превратить почти в кирпич (что не очень удобно на распаянной smd плате), я сначала СЧИТЫВАЮ биты, заодно можно убедиться в правильности подключения программатора к МК. Если всё хорошо — получаем такую картинку

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Чтобы правильно выставить fuse-биты, нужно воспользоваться помощью специального калькулятора. Я пользуюсь этим. Тут также нужно выбрать чип, способ тактирования и другие параметры. В принципе для смены частоты достаточно сменить блок CKSEL фьюзов. В данном случае я выбрал Int RC — 8Mhz.

Смотрите также:  Как сделать корпус робота. Новый компьютер
Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Получил картинку фьюзов.

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

А теперь переносим параметры в AVR DUDE, также калькулятор включает делитель на 8, бит CKDIV8, он нам не нужен. Можете пользоваться нижеприведённым скриншотом, для запуска atmega 328p на 8Мгц от внутреннего RC осциллятора.

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Жмём запись — и МК принимает необходимую конфигурацию. Теперь осталось залить прошивку, но ведь она у нас рассчитана на 16Мгц, но в Arduino IDE, есть простой путь скомпилировать прошивку для atmega 328, для частоты 8Мгц. Нужно выбрать плату arduino pro, и указать частоту 8mhz

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Как вы заметили, напротив чипа, стоит напряжение 3.3В при пониженной частоте — всё верно, но это не означает, что нельзя запитать кристалл от 5В. Зато от 3.3В теперь можно). Теперь после компиляции нам осталось по знакомому пути найти файл прошивки в формате HEX, и вернуться в AVR DUDE. Выбрать файл прошивки — и нажать программирование.

Как перейти от Arduino к серийному образцу. Минимальная обвязка AtMega 328

Всё! Вы избавились от лишней периферии Arduino, можете сделать плату в своём дизайне PCB, а прошивку использовать с вашего прототипа. В следующей статье, мы сделаем свою плату игральных костей в размере 4х4 см, чтобы упаковать в маленький корпус, и проделаем эти шаги на практике.