Программатор для atmega328: Arduino ISP программатор для ATmega328, Минимальная Arduino, DIY

Банальная проблема незапуска 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, на свой чип гуглите:

Все частоты AVR

Второй вариант: вы выбрали не тот чип. Например, вот модификации 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-му контактам Atmega328.

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, замуровав мою микросхему, доведя ее до состояния, когда она больше не принимает никакого кода. Однако я нашел очень простое и элегантное решение, которое значительно облегчает жизнь любителям и производителям. Я столкнулся с такими ошибками, как следующая ошибка

при записи загрузчика. Программатор не синхронизирован.0002 В какой-то момент я усомнился в схемах, сделанных для кастомной платы. Я прикрепляю сюда фрагмент моей схемы, чтобы вы знали, как должны быть нарисованы правильные схемы для нестандартных плат.

Схемы изготовленной мной пользовательской платы (прилагаются только MCU, часы и разделы сброса)

Как запрограммировать пользовательскую плату с помощью Arduino UNO?

Соединения между вашей пользовательской платой и Arduino UNO довольно просты и понятны. Все, что вам нужно сделать, это сделать прямые соединения между контактами ICSP обеих плат, как показано ниже.

Соединения между контактами 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 и нажмите кнопку «Установить», чтобы установить платы.

Установка пакетов ядра для Atmega328P IC

После этого вы сможете увидеть платы 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 UNO)

Вы должны увидеть сообщение об отладке, как показано ниже, которое подтверждает, что код успешно загружен на вашу пользовательскую плату, и ваша плата должна выполнить этот код.

Подтверждение от 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

Собрать в альбом

Идет загрузка.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *