Как сделать программатор для ATmega328 своими руками. Какие компоненты потребуются для сборки. Как прошить микроконтроллер с помощью самодельного программатора. На что обратить внимание при программировании ATmega328.
Что такое программатор для ATmega328 и зачем он нужен
Программатор для ATmega328 — это устройство, позволяющее записывать прошивку и загрузчик в микроконтроллер ATmega328. Он необходим для первоначального программирования «чистого» микроконтроллера или перепрограммирования уже использованного чипа.
Основные задачи программатора:
- Запись загрузчика (bootloader) в ATmega328
- Прошивка основной программы в микроконтроллер
- Изменение фьюз-битов для настройки параметров чипа
- Считывание содержимого памяти микроконтроллера
Наличие программатора позволяет работать с «голым» микроконтроллером ATmega328 без использования готовых плат вроде Arduino. Это дает возможность создавать компактные устройства на базе ATmega328 с минимумом дополнительных компонентов.
![](/800/600/https/ezcontents.org/sites/default/files/2019-05/schematic.jpg)
Типы программаторов для ATmega328
Существует несколько основных видов программаторов для микроконтроллеров семейства AVR, включая ATmega328:
1. USB-программаторы
Подключаются напрямую к USB-порту компьютера. Наиболее распространенные модели:
- USBasp
- USBtinyISP
- AVRISP mkII
Преимущества: простота использования, не требуют дополнительного питания.
2. Параллельные программаторы
Подключаются к LPT-порту компьютера (устаревший тип).
Преимущества: высокая скорость программирования. Недостатки: требуют наличия LPT-порта.
3. Arduino в качестве программатора (Arduino as ISP)
Использование платы Arduino в роли программатора.
Преимущества: доступность, не требует покупки отдельного устройства.
4. Самодельные программаторы
Собираются из отдельных компонентов по различным схемам.
Преимущества: низкая стоимость, возможность кастомизации.
Компоненты для сборки программатора ATmega328
Для создания простого программатора ATmega328 на базе Arduino потребуются следующие компоненты:
- Плата Arduino (Uno, Nano или другая на базе ATmega328)
- Макетная плата
- Кабель USB для подключения Arduino к компьютеру
- Перемычки (провода) для соединений
- Конденсаторы 22 пФ — 2 шт.
- Кварцевый резонатор 16 МГц
- Светодиод и резистор 220 Ом (опционально)
При использовании других схем программаторов набор компонентов может отличаться. Важно внимательно изучить схему и подобрать соответствующие детали.
![](/800/600/https/forum.mysensors.org/uploads/files/1456995702860-usbasp_pinout.png)
Пошаговая инструкция по сборке программатора на базе Arduino
Рассмотрим процесс создания простого программатора ATmega328 с использованием платы Arduino:
- Подключите Arduino к компьютеру через USB-кабель.
- Загрузите в Arduino скетч ArduinoISP из стандартных примеров среды Arduino IDE.
- На макетной плате установите программируемый ATmega328.
- Подключите выводы RESET, MOSI, MISO, SCK Arduino к соответствующим выводам ATmega328.
- Подключите кварцевый резонатор и конденсаторы к выводам XTAL1 и XTAL2 микроконтроллера.
- Соедините выводы питания и земли Arduino и ATmega328.
- При необходимости добавьте светодиод для индикации процесса прошивки.
После сборки программатор готов к использованию. Теперь можно приступать к прошивке микроконтроллера ATmega328.
Процесс программирования ATmega328 с помощью самодельного программатора
Для прошивки ATmega328 с использованием собранного программатора выполните следующие шаги:
- Подключите программатор к компьютеру через USB-кабель Arduino.
- Запустите Arduino IDE и откройте нужный скетч.
- В меню «Инструменты» выберите:
- Плата: «Arduino Uno» (или соответствующая модель)
- Программатор: «Arduino as ISP»
- Нажмите «Записать загрузчик» для прошивки бутлоадера (если требуется).
- Выберите «Загрузка с использованием программатора» для записи основного скетча.
- Дождитесь завершения процесса прошивки.
После успешной загрузки микроконтроллер ATmega328 готов к работе с новой прошивкой.
![](/800/600/https/wreckage.ru/wp-content/uploads/2019/05/%D0%9F%D0%BE%D0%BB%D0%BD%D0%B0%D1%8F-%D0%BE%D0%B1%D0%B2%D1%8F%D0%B7%D0%BA%D0%B0-atmega328-%D0%B4%D0%BB%D1%8F-%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%B0%D1%82%D0%BE%D1%80%D0%B0-1-1024x776.png)
Особенности и нюансы программирования ATmega328
При работе с программатором ATmega328 следует учитывать ряд важных моментов:
- Правильная установка фьюз-битов критична для корректной работы микроконтроллера. Неверные настройки могут «заблокировать» чип.
- Убедитесь в соответствии выбранной тактовой частоты и подключенного кварцевого резонатора.
- При первом программировании «чистого» ATmega328 необходимо сначала записать загрузчик.
- Для надежного программирования используйте короткие соединительные провода и качественный USB-кабель.
- Если микроконтроллер не программируется, проверьте правильность подключения и попробуйте снизить скорость программирования.
Внимательное отношение к этим аспектам поможет избежать большинства проблем при работе с программатором ATmega328.
Сравнение самодельного программатора с готовыми решениями
Рассмотрим преимущества и недостатки самодельного программатора ATmega328 по сравнению с готовыми устройствами:
Преимущества самодельного программатора:
- Низкая стоимость — требуется минимум компонентов
- Возможность кастомизации под конкретные задачи
- Образовательный аспект — понимание принципов работы
- Использование имеющихся компонентов (например, платы Arduino)
Недостатки самодельного программатора:
- Может быть менее надежным, чем заводские устройства
- Отсутствие гарантии и технической поддержки
- Требует времени на сборку и отладку
- Ограниченный функционал по сравнению с профессиональными программаторами
Выбор между самодельным и готовым программатором зависит от конкретных потребностей, бюджета и опыта разработчика. Для начинающих и небольших проектов самодельный вариант часто оказывается оптимальным решением.
![](/800/600/https/diodov.net/wp-content/uploads/2017/08/Ris2l-1-1024x675.jpg)
Банальная проблема незапуска AVR, решение которой глубоко под землей / Хабр
Представим: купили вы новый камень для своего проекта, а он — зараза — не шьется! Все собрано правильно, программатор правильный — всё равно ошибка. Знакомо? Мне да. Поэтому я решил написать про это статью.
Немного предыстории
Понадобилась мне значит Atmega32, купил, впаял, пытаюсь прошить — ошибка!
Ошибка avrdudeЛезем в гугл, где вам предложат:
Другая история — попалась мне Atmega328p, друг попросил накатить загрузчик. Ошибка такая же. Похоже на случай описанный ранее? На первый взгляд да. А вот когда начнем разбираться…
Прошиваем Atmega32
Я, как и многие другие, использую дешевой китайский программатор USBasp.
USBaspНекоторые программаторы приходят со сбитыми элементами, непропаями и соплями. Даже если вы купите USBasp в нашем магазине, то скорее всего он будет собран в том же китайском подвале, что и его собратья купленные в китайских интернет-магазинах.
На программаторе мы видим 3 джампера: прошивка программатора — JP1, напряжение питания — JP2, и незапаяный джампер JP3 — прошивка на пониженной скорости.
Что такое «низкая скорость прошивки» и почему важна частота?
Пока перенесёмся из мира электроники, мир наш. Представим что на работе раз в час приходит начальник, чтобы проверить, как вы работаете. Время появления начальника вам известно, соответственно, вы начинаете работать и не получаете пинков от него. Но в один прекрасный момент, начальник начинает приходить раз в 45 минут, но вы этого не знаете. Так же и с МК, если он настроен на 16 MHz, но будет кварц на 8 MHz, чип не будет работать. Настройки частоты задаются фьюзами. За источник тактирования отвечают CKSEL. В зависимости от частоты, меняется скорость прошивки. Обычно на новых камнях стоят одни из этих источников тактирования:
External 16 MHz
External 8 MHz
Internal 8 MHz
Internal 1 MHz
Internal 128 KHz
Для работы с чипом имеющим частоту меньше 1 МГц, нужно снизить скорость прошивки. Это можно сделать перемычкой JP3 на программаторе, или в настройках используемой вами программы. После этого Atmega32 прошилась!
Прошиваем Atmega328p
В этом случае колдовать со скоростью прошивки не пришлось. Но пришлось поиграть с кварцами. Просто глядя на камень его настройки установить невозможно. А если МК не запускается, определить фьюзы даже с программатором это бесполезная затея. Не буду томить — в моем случае какой-то китаец настроил Atmega328p на External 8 MHz. Подключаем чип к программатору, жмем «Записать загрузчик» и…
Готово!Далее не забываем подкинуть кварц на выбранную вами частоту. В Arduino IDE частота меняется здесь (в большинстве кастомных ядер):
Выбранная частота 16MHzЕсли все равно не работает
Первый вариант: вы перебрали не все кварцы. По-хорошему, у вас должно быть достаточно разных кварцев — на 16, 8, 4 MHz. В последнее время появились микроконтроллеры с частотой 20 MHz, но их достаточно мало. Однако и такой вариант следует предусмотреть. Вот полный список частот Atmega32, на свой чип гуглите:
Второй вариант: вы выбрали не тот чип. Например, вот модификации atmega328:
Тот ли чип вы выбрали?Третий вариант: МК в мусорку. Попался с брачком, ну или сгорел.
Заключение
Описанные в статье проблемы выявить и устранить не всегда бывает легко, но возможно. Надеюсь статья была вам полезна, и вы узнали что-то новое или справились с проблемой. Если есть вопросы, пишите в комментарии, а на этом я с вами прощаюсь, всем удачи и всем, пока!
Прошивка Atmega328 с помощью Arduino (as ISP) » NGIN.pro
Прошивка Atmega328 с помощью Arduino (as ISP)
В настоящее время Arduino является удобным инструментом для любителей электроники. Открытая платформа и «готовые к использованию» схемы, различные Arduino шилды для реализации любых конструкций. Но иногда это трудно и не эстетично использовать такую большую плату в качестве основной схемы нашего проекта или продукта.
Когда мы делаем продукт на уровне приложений, нам не нужно весь Arduino. Нам нужен только микроконтроллер, что запрограммирован в соответствии с нашим приложением, и мы не нуждаемся в схеме программирования Arduino. И поэтому, в этой статье мы будем прошивать микроконтроллер Atmega328 с помощью Arduino Uno.
Шаг 1: Элементы
1. Arduino Uno.
2. Макетная плата.
3. USB A к USB B кабель.
4. Микроконтроллер ATmega328.
5. Светодиоды.
6. Конденсаторы 22 пФ.
7. Кварцевый генератор 16Mhz.
8. 9В батарея.
9. Перемычки.
Шаг 2: Подключение микроконтроллера Atmega328
Микроконтроллеры Atmega328, что мы покупаем на рынке, могут или не могут быть с загрузчиком (bootloaded). Если он уже bootloaded, то мы можем напрямую использовать его с Arduino, в противном случае мы должны загрузить его в первую очередь.
1. Закрепите Atmega328 на макетной плате.
2. Подключите кварцевый генератор к 9-му и 10-му контактам Atmega 328.
3. Подключите два 22 пФ конденсаторы, к каждой из двух ножек кристалла и заземлите их.
4. Подключите контакты 7 и 20 к контакту 5V Arduino.
5. Подключите контакты 8 и 22 к GND Arduino.
6. Подключите контакт 10 Arduino к контакту 1 (reset) Atmega328.
7. Подключите контакт 11 Arduino к контакту 17 Atmega328.
8. Подключите контакт 12 Arduino к контакту 18 Atmega328.
9. Подключите контакт 13 Arduino к контакту 19 Atmega328.
Теперь подключите Arduino к компьютеру
Programmer>arduino as ISP»>В меню выберите Инструменты> Программатор> Arduino как ISP
Burn bootloader -> Затем выберите Programmer>arduino as ISP»>Инструменты> Записать Загрузчик
Через несколько секунд, Atmega328 будет с загрузчиком и мы сможем легко программировать его с помощью Arduino платы.
Шаг 3: Программирование
Удалите все соединения, что мы сделали для бутлоадера.
Теперь соберем схему для програмирования Atmega328.
1. Подключите Vcc и Gnd от Arduino к контактам макетной платы
2. Подключите RESET Arduino к контакту 1 ATmega328.
3. Подключите Rx Arduino к контакту 2 ATmega328.
3. Подключите Tx Arduino к контакту 3 ATmega328.
Теперь внесем некоторые изменения в IDE, как показано ниже,
Board > «Arduino Duemilanove or Diecimila»»>1. Из меню, выберите Инструменты> Плата> «Arduino Duemilanove или Diecimila»
Processor > ATmega328″>2. Теперь выберите, Инструменты> Процессор> ATmega328
Теперь все настройки программирования готовы.
Напишите программу, как обычно, и нажмите кнопку «загрузить»
Код был загружен в микроконтроллер.
Уберите все Arduino соединения, обеспечьте отдельный источник питания постоянного тока 5В к плате, и теперь у вас есть независимый микроконтроллер Atmega328 в действии.
Шаг 4: Будьте внимательны!!!
В Arduino IDE, контакт 5 означает 5 контакт Arduino, а не пятый контакт микроконтроллера Atmega328.
Это на самом деле 11-й контакт Atmega328.
Таким образом, чтобы получить доступ к 11-му контакту Atmega328, мы должны написать в коде «5», а не 11.
Все 18 I/O контакты Atmega328 доступны.
Вот вам таблица, которая описывает все особенности кодирования контактов ввода / вывода.
Источник
Программирование ATMega328P (SMD IC) с нуля для заказных плат
ардуино • 10 мая 2021 г.
Разрабатываете собственную печатную плату для персонализированных приложений с помощью ИС Atmega328P SMD и застряли в том, как запрограммировать ее или заставить ее работать с Arduino IDE, как обычный Arduino UNO? Тогда вы в правильном месте.
В чем разница между Arduino UNO и Atmega328p на заказной печатной плате?
Arduino UNO полностью настроен для работы в качестве оценочной платы для микросхемы Atmega328p. Он имеет встроенную микросхему преобразователя USB в последовательный порт, которая преобразует информацию, поступающую по USB от вашего ПК, в логику TTL, которую понимает MCU. Принимая во внимание, что на ваших нестандартных платах адаптеры USB-последовательный порт обычно отсутствуют (по крайней мере, для тех конструкций, которые я делаю). Обычно это делается разработчиками, потому что микроконтроллеры AVR, такие как Atmega328p, поставляются с интерфейсом программирования и отладки, называемым ICSP (внутрисхемное последовательное программирование), который просто использует 6 контактов на микроконтроллере для прямой загрузки кода от любых внешних программаторов. Теперь это не очень традиционный метод использования, но он уменьшает количество деталей на печатной плате, значительно экономя несколько долларов разработчику при массовом производстве печатных плат.
Итак, нужно ли мне использовать дорогостоящие программаторы, такие как Atmel ICE или другие отладчики, для программирования этих специализированных ИС?
Ответ одним словом — НЕТ! К счастью, есть несколько других способов сделать это. Я собираюсь обсудить самый простой метод из всех, и вам не нужно покупать какие-либо дорогостоящие вещи, чтобы сделать это. Все, что вам нужно, это
1. Arduino UNO (минимальное требование для программирования вашей пользовательской платы)
2. Ваша пользовательская плата с микросхемой Atmega328p (обратите внимание, что разъемы ICSP должны быть расширены, чтобы их можно было соединить с контактами ICSP-контактов Arduino UNO)
3. Несколько перемычек для выполнения соединений.
4. Arduino IDE.
Вот так..! Это то, что вам нужно, чтобы запрограммировать свою пользовательскую плату и настроить ее и запустить, как обычную плату UNO.
Отлично! Но как я в конечном итоге нашел этот метод и с какими ошибками я столкнулся на своей пользовательской плате, прежде чем попробовать этот метод?
Что ж, я прошел через множество ошибок, пробуя разные методы в Интернете, и все попытки терпели неудачу. Я копнул так глубоко, что в какой-то момент я запутался с битами предохранителей Atmega328p, замуровав мою микросхему, доведя ее до состояния, когда она больше не принимает никакого кода. Однако я нашел очень простое и элегантное решение, которое значительно облегчает жизнь любителям и производителям. Я столкнулся с такими ошибками, как следующая ошибка
Как запрограммировать пользовательскую плату с помощью Arduino UNO?
Соединения между вашей пользовательской платой и Arduino UNO довольно просты и понятны. Все, что вам нужно сделать, это сделать прямые соединения между контактами ICSP обеих плат, как показано ниже.
Обратите внимание, что контакт RST пользовательской платы должен быть подключен к контакту D10 на Arduino UNO (линия выбора подчиненного устройства). Теперь откройте Arduino IDE. Перейдите к
Файл -> Пример -> ArduinoISP -> Скетч ArduinoISP
Откройте скетч ArduinoISPПосле его открытия перейдите к Tools -> Boards -> Arduino UNO . Выберите программатор как AVRISP mkII.
Теперь загрузите этот скетч ArduinoISP в Arduino UNO, чтобы преобразовать его в программатор для вашей пользовательской платы. После завершения загрузки вы успешно преобразовали Arduino UNO в программатор ISP.
Прежде чем мы продолжим экспериментировать с пользовательской платой, нам нужно загрузить нужные файлы ядра для начальной загрузки микросхемы. Для этого
перейдите в File -> Preferences или нажмите Ctrl + запятая на клавиатуре.
Вставьте следующую ссылку на платы, которая поможет загрузить и обновить поле плат в Arduino IDE.
https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
Добавление ссылки на дополнительные URL-адреса менеджеров досок После вставки нажмите «ОК» и закройте окно.
Перейдите в Инструменты -> Платы -> Диспетчер плат
Найдите файл плат MiniCore в MCUdude и нажмите кнопку «Установить», чтобы установить платы.
После этого вы сможете увидеть платы Atmega328, 168, 88, 48, 8 в разделе плат MiniCore. Выберите из него Atmega328p, так как мы используем его для текущего урока. Будет показано несколько вариантов для выбора BOD (обнаружение отказа), EEPROM, компилятора и т. д. Я предлагаю оставить их как есть и выберите программатор Arduino как ISP (minicore) (Важный шаг)
Если этот программатор выбран неправильно, то Arduino IDE не поймет, по какому пути должен быть отправлен код, и выдаст ошибку. После того, как все параметры выбраны правильно, нажмите кнопку «Записать загрузчик» в конце, это запишет загрузчик Arduino в микросхему Atmega328p, что позволит ему принимать любые коды или инструкции по линиям ICSP.
После успешного выполнения этого шага настало время написать собственные скетчи и загрузить их на пользовательскую доску. Откройте свой эскиз, перейдите к Tools -> Boards -> Arduino Nano
Для загрузки кода на пользовательскую плату с Atmega328P После этого шага, наконец, вам нужно загрузить свой код, используя опцию
Sketch -> Upload Using Programmer или просто нажмите Ctrl + Shift + U
Вы должны увидеть сообщение об отладке, как показано ниже, которое подтверждает, что код успешно загружен на вашу пользовательскую плату, и ваша плата должна выполнить этот код.
Подтверждение от Arduino IDE, что код успешно загружен.Спасибо за прочтение. Надеюсь, вам, ребята, понравилось, и вы сэкономили немного времени, чтобы избежать тяжелой работы.
Приятного творчества..!!
Спасибо,
Гудиметла Коушик
- ардуино
- OpenHardware
Подпишитесь на нашу рассылку
Получайте последние сообщения прямо в свой почтовый ящик.
Ваш адрес электронной почты
Теперь проверьте свой почтовый ящик и нажмите на ссылку, чтобы подтвердить подписку.
Пожалуйста, введите действительный адрес электронной почты
Ой! При отправке письма произошла ошибка, попробуйте позже.
ПрограмматорATMEGA328 — Лаборатория оборудования с открытым исходным кодом EasyEDA
Описание
Этот проект представляет собой простой программатор для записи загрузчика на ATMEGA328P с использованием arduino в качестве ISP, прежде чем он будет припаян к плате. Можно следовать инструкциям здесь https://www.instructables.com/id/Burn-a-New-Bootloader-Arduino-Pro-Mini/ по использованию Arduino в качестве интернет-провайдера. Обратите внимание, что эта конструкция избавляет вас от необходимости выполнять все соединения, как показано в инструкции. Просто поместите новый ATMEGA328P в адаптер и продолжите с » Третий шаг «в инструкции.
Встроенный контроллер был спроектирован как 328P, но может быть заменен на ATMEGA88 или ATMEGA168. держатель для программирования ATMEGA328P.Его можно приобрести онлайн на aliexpress по этой ссылке https://www.aliexpress.com/item/TQFP32-QFP32-TO-DIP32-IC-Programmer-Adapter-Chip-Test-Socket- SA663-Burning-Seat-Integrated-Circuits/32885926613.html?spm=a2g0s.9042311.0.0.134f4c4d9yeSJK.
Это устройство полезно, если вам нужно записать загрузчик на несколько контроллеров перед сборкой.
дизайн чертеж
схематическая диаграмма
( 1 / )
печатная плата
( 1 / )
Пусто
ID | Имя | Обозначение | След | Количество |
---|---|---|---|---|
1 | ДИЛБ32П-223ТКС | СК1 | ДИП-32 | 1 |
2 | 0,1 мкФ | С3, С1, С11 | 0603-КАП | 3 |
3 | АТМЕГА328 | У4 | TQFP32-08 | 1 |
4 | CON_HEADER_1X06-PTH | Дж1 | М1Х6 | 1 |
5 | 1,02 кОм | Р2 | 0805 | 1 |
6 | 10 кОм | Р6, Р1 | 0805 | 2 |
7 | 8 МГц | Х2, Х1 | 3213 | 2 |
8 | XL-1206QPC (КРАСНЫЙ) | Светодиод | 1206 | 1 |
Развернуть
Приложения к проекту
Участники проекта
0
2
Собрать в альбом
Идет загрузка.