Site Loader

Прошивка микроконтроллеров Atmega через USBasp

Прошивка микроконтроллеров Atmega без arduino через USBasp:

Купить программатор здесь

Существуют простые и дешевые программаторы для прошивки м/к Atmega ,которые поддерживает среда Arduino IDE- необходимо просто выбрать соотвествующий программатор USBasp в настройках Arduino IDE.USBasp  необходим,если вы просто прошиваете микроконтроллеры Amtel.Программатор основан на м/к Atmega 8 и использует програмный USB.

Он имеет выход питания 5v/3.3 v(переключается перемычкой JP1) ,а так же соотвествующие выводы SCK, MISO, MOSI, RESET для подключению напрямую к микроконтроллеру.На картинке показаны выводы на самом программаторе — на разъеме шлейфа соответственно будет зеркально относительно ключа (у 5 вывода),не забывайте об этом.

Для работы в операционной системе Windows необходимы  драйвера. Linux же не требует их.

Данный программатор легко превратить в друое устройство,например в I2C-USB переходник , USB контроллер с GIO или контроллер чтения термодатчиков DS18B20.

 Программирование через USBasp в Arduino IDE

Для программирования микроконтроллеров,подключенных через USBasp в Arduino IDE необходимо выбрать его в программе.

Программирование осуществляется через меню файл,выбрав пункт  «Загрузить с помощью программатора».Не забываем выбрать микроконтроллер в меню «сервис» ->»плата».

Программирование через USBasp утилитой avrdude

Утилиту avrdude можно найти в папке /hardware/tools/ в дистрибутиве Arduino IDE или скачать в интернете.

Для того,чтобы залить прошивку в микроконтроллер необходимо выполнить команду:

 avrdude -c usbasp -p m8 -U flash:w:имя_файла.hex . где -p m8 — это модель микроконтроллера.В данном случае atmega 8.

Дополнительно так же можно установить фьюзы дописав :-U hfuse:w:0xХХ:m -U lfuse:w:0xХХ:m .Где ХХ — соотвествующие фьюзы микроконтроллера ,необходимые для конкретной прошивки.

Обычно прошивку можно осуществить через команду make flash ,если Вы имеете исходный код прошивки и установленную WinAVR.

В других средах программирования выбор программатора осуществляется через соответсвующее меню программы.

Обратите внимание, xто на некоторых микроконтроллерах с завода,например на серии Attiny включен по умолчанию фьюз CKDIV8 ,который устанавливает делитель на 8 и из-за этого USBasp не программирует такие микроконтроллеры пока не установить перемычку JP3 на USBasp.Для настройки фьюзов воспользуйтесь калькулятором фьюзов чтобы выставить нужные настройки , в том числе выключить данный делитель.Фьюзы прошиваются через avrdude командой  avrdude -c usbasp -p имя_м/к -U lfuse:w:0xХХ:m .

Пример для установки фьюзов attiny85 для внутреннего генератора 8мгц с выключенным делителем на 8 : 

avrdude -c attiny85 usbasp -p -U lfuse:w:0x62:m

При программировании через Arduino IDE можно установить нужные фьюзы выбрав в меню «записать загрузчик»,выбрав перед этим необходимый микроконтроллер.

Банальная проблема незапуска 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 — Как прошить ATmega напрямую без специального устройства для прошивки?

спросил

Изменено 5 лет, 11 месяцев назад

Просмотрено 6к раз

Микроконтроллер ATmega можно прошить с помощью компилятора C и специального USB-устройства (ISP).

Я попытался прошить программу в микроконтроллер, сохранив машинный код на карту MicroSD, которую затем подключил к микроконтроллеру. Я полагаю, что мы можем использовать считыватель USB SPI для тестирования программы без специального устройства, такого как USBtiny.

Но я подозреваю, что компилятор просто создает шестнадцатеричный файл, а затем USB преобразует его в машинный код.

Я думал неправильно?

Если компилятор загружает машинный код через USB программатор в микроконтроллер, то разве нам не нужна MicroSD USB для его программирования?

  • atmega328
  • spi
  • usbasp

Ваше первоначальное предположение: «Микроконтроллер ATmega может быть прошит с помощью компилятора C и специального USB-устройства (ISP)». неправильно.

Компилятор C преобразует исходный код в язык ассемблера. Затем он передается ассемблеру, который преобразует его в объектный код. Затем компоновщик создает из всего этого файл ELF. Затем он преобразуется в HEX-файл с использованием objdump .

Затем этот HEX-файл загружается другой программой, avrdude , который умеет управлять подключенным через USB программатором. Затем это устройство отправляет чипу специальные инструкции через порт ISP для правильного копирования данных, загруженных из HEX-файла, в память чипа.

Это довольно сложная процедура, и для ее выполнения вам потребуется активный компонент смеси. Просто подключить SD-карту и надеяться, что она заработает, — это, к сожалению, смехотворная идея. Вам нужно что-то, что а) понимает, как читать данные с SD-карты и может их интерпретировать, и б) знает, как программировать ATMega через интернет-провайдера.

Можно создать что-то подобное, используя другой чип, например другой ATMega, и написав соответствующее программное обеспечение. Если вы любите приключения, конечно. По сути, вы бы создали автономный программатор, который имеет преимущества, когда вы хотите выполнять обновления на месте, но бесполезен, когда вы сидите за своим столом и разрабатываете программное обеспечение.

1

Компилятор этого не делает, это делает отдельная программа. Для большинства ATMegas и большинства людей программа, которая это делает, называется avrdude. Он взаимодействует с вашим интернет-провайдером и передает код, когда вы даете ему соответствующие настройки.

Смотрите здесь:

http://www.ladyada.net/learn/avr/avrdude.html

Таким образом, вы получаете шестнадцатеричный код от вашего компилятора и отправляете его через avrdude на чип с помощью вашего интернет-провайдера. Ни в коем случае MicroSD не требуется. FWIW, код ATMega должен быть загружен во флэш-память. Он не может запускать код с Micro SD.

1

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Нажимая «Опубликовать свой ответ», вы соглашаетесь с нашими условиями обслуживания, политикой конфиденциальности и политикой использования файлов cookie

.

Как прошить загрузчик Arduino без программатора — Блог Welldone

robertferanec Ардуино

Если у вас Arduino Uno R3, то вам не нужен программатор для прошивки загрузчика в ATMEGA328P.

Как это работает: На плате Ардуино два микроконтроллера: ATMEGA328P (328P) и ATMEGA16U2 (16U2). Вы можете обновить прошивку 16U2, чтобы стать программатором AVRISP MKII, а затем использовать Atmel Studio для прошивки 328P.

Я начал с веб-сайта kosakalab, но у меня были некоторые проблемы, и шаги не очень хорошо для меня работали (особенно часть прошивки загрузчика через программное обеспечение Arduino). Проблем было больше и поэтому я решил выложить весь процесс в свой блог, чтобы другие люди могли сэкономить свое время.

Установить программное обеспечение Atmel FLIP

Вам потребуется программное обеспечение Atmel FLIP для обновления прошивки внутри 16U2.
1. Перейдите по адресу http://www.atmel.com/tools/FLIP.aspx и загрузите FLIP.
2. Установите его. У вас не должно возникнуть никаких проблем, просто следуйте указаниям мастера установки.
3. Возьмите плату Arduino, отключите ее от питания и USB. Установите ссылку на разъем ICSP1, контакты 5-6 (это сохранит 16U2 RESET в низком уровне).

4. Подключите Arduino к USB.
5. Отсоедините Link ICSP1 (5-6). В этот момент 16U2 переходит в режим DFU. Новое USB-устройство должно быть распознано.
6. Если драйвер не устанавливается автоматически, установите его из «c:Program FilesAtmelFlip 3.4.7usb»
7. Перейдите в Диспетчер устройств (Win+Pause -> (Оборудование) -> Диспетчер устройств) и проверьте, отображается ли драйвер установлен правильно. Он будет расположен в разделе USB-устройства Atmel -> ATmega16U2

. Перенесите прошивку AVRISP MKII в ATmega16U2

. Мы готовы перепрошить прошивку внутри 16U2.
1. Загрузите шестнадцатеричный файл AVRISP MKII здесь. Если вы хотите узнать, как его скомпилировать, посмотрите Compile LUFA AVRISP MKII Project. Файл основан на проекте LUFA.
2. Отключите Arduino от кабеля USB и питания.
3. Установите перемычку на контакты 5–6 ICSP1.
4. Подключите Arduino к USB.
5. Отсоедините ссылку на контактах 5-6 ICSP1.
6. Запустите программное обеспечение FLIP: выберите «Пуск» -> «Все программы» -> «Flip» -> «Flip».
7. Перейдите в Настройки -> Связь -> USB.
8. Нажмите «Открыть».
9. Перейдите в File -> Load HEX file и выберите LUFA-BOTH-AVRISP-MKII.hex
11. Нажмите «Выполнить».

12. ATMEGA16U2 теперь называется AVRISP MKII и работает в режиме Atmel Studio. Важно : Ваш «Arduino AVRISP MKII» может работать в двух режимах: Atmel Studio или Avrdude. Ниже я буду говорить только о режиме Atmel Studio, так как у меня было много проблем с режимом Avrdude.

Установка Atmel Studio

1. Загрузите и установите Atmel Studio (включая драйверы) с http://www. atmel.com/microsite/atmel_studio6/
2. После установки подключите Arduino к USB-кабелю. Оба светодиода (RX и TX) должны мигнуть два раза (это означает, что 16U2 находится в режиме «Atmel Studio»). Новое устройство будет распознано.
3. Установите драйверы. Если они не распознаются автоматически, вы найдете их в «c:Program FilesAtmelAtmel USB Drivers»
4. Перейдите в Диспетчер устройств (нажмите Win+Pause -> (Оборудование) -> Диспетчер устройств) и проверьте, видите ли вы драйвер. правильно установлен. Он будет находиться в Jungo Connectivity -> AVRISP mkII

5. Вы готовы прошить ATMEGA328P. Перейти к следующему пункту.

Прошивка загрузчика Arduino в ATMEGA328P через ATMEGA16U2

1. Это самая сложная часть 🙂 Вам нужно будет припаять несколько проводов. В основном нам нужно подключить:
ICSP1 MISO2.Pin.1 ICSP MISO.Pin.1
ICSP1 SCK2.Pin.3 ICSP SCK.Pin.3
ICSP1 MOSI2.Pin.4 ICSP MOSI.Pin.4
JP2 PB4.Pin.1 ICSP RESET.Pin .5
Посмотрите эту красивую картинку в посте kosakalab (спасибо, Кимио):

2. Подключите плату Arduino к USB-кабелю. Светодиоды RX и TX должны мигнуть два раза. Драйвера должны корректно распознаваться (Jungo Connectivity -> AVRISP mkII)
3. Запустите Atmel Studio. Перейдите в Пуск -> Все программы -> Atmel -> Atmel Studio.
4. Перейдите: Инструменты -> Программирование устройства
5. Выберите: «Инструменты» -> AVRISP mkII; «Устройство» -> ATmega328P; «Интерфейс» -> Интернет-провайдер; и нажмите кнопку «Применить».
6. Установите часы ISP на 16,1 кГц. Нажмите кнопку «Установить».
Примечание. Программирование не будет работать, если вы установите очень низкую тактовую частоту интернет-провайдера. Вы получите сообщение об ошибке: «ispProgramMem: получен статус ошибки: получено 0x81, ожидается 0x00 (время выборки вывода RDY/nBSY истекло)». Однако максимальная скорость интернет-провайдера также ограничена и не может превышать 1/4 частоты устройства.

7. Перейдите к: «Подпись устройства» и нажмите кнопку «Читать». Вы должны увидеть правильную «Подпись устройства»: 0x1E950F
8. Нажмите «Воспоминания» и найдите шестнадцатеричный файл загрузчика Arduino. Он находится в «C:Program FilesArduinohardwarearduinobootloadersoptibootoptiboot_atmega328.hex»
9. Нажмите кнопку «Программировать»
ВАЖНОЕ ПРИМЕЧАНИЕ: Если вы используете новый незапрограммированный ATMEGA328P, вы также должны запрограммировать FUSES. Перейдите к Fuses и используйте следующие значения: low_fuses=0xff; high_fuses=0xde; расширенные_фьюзы = 0x05

10. Вы успешно запрограммировали 328P с помощью загрузчика Arduino. На следующем этапе мы вернем исходную прошивку 16U2.

Перепрошивка ATMEGA16U2 до оригинального программного обеспечения Arduino

Почти готово. Нам нужно вернуть исходное программное обеспечение в ATMEGA16U2.
1. Отключите Arduino от питания и USB.
2. Поместите ссылку на ICSP1 и закоротите контакты 5-6.
3. Подсоедините кабель USB.
4. Удалите ссылку ICSP1 5-6.
5. Запустите программное обеспечение FLIP. Перейдите в: Пуск -> Все программы -> Перевернуть -> Перевернуть.
6. Зайдите в: Настройки -> Связь -> USB.
7. Нажмите «Открыть».
8. Перейдите: Файл -> Загрузить HEX-файл. Выберите этот файл «c:Program FilesArduinohardwarearduinofirmwaresatmegaxxu2arduino-usbserialArduino-usbserial-atmega16u2-Uno-Rev3.hex»
9. Нажмите «Выполнить».
10. Отсоедините USB-кабель и снова подключите его. Новое USB-устройство должно быть распознано. Если драйвер не установлен автоматически, вы найдете его в «c: Program FilesArduinodrivers».
11. Зайдите в Диспетчер устройств (Win+Pause -> (Оборудование) -> Диспетчер устройств) и проверьте правильность загрузки драйвера. Вы должны увидеть его в разделе «Порты» -> «Arduino Uno 9».0005

12. Отлично! Теперь мы можем протестировать пример Blink. Запустите программное обеспечение Arduino (Пуск -> Arduino).
13. Нажмите на иконку «Открыть» (стрелка вверх) -> 01.Основы -> Blink.
14. Выберите COM-порт: Сервис -> Последовательный порт -> COM (выберите порт, на котором была распознана плата).
15. Щелкните значок «Загрузить» (стрелка вправо).
16. Пользовательский светодиод должен начать мигать 🙂
17. Готово! Вы успешно перепрограммировали ATMEGA328P без использования внешнего программатора.

Научитесь создавать свои собственные платы онлайн — на основе Arduino

После этого курса вы создадите свою собственную плату, похожую на Arduino. Этот курс предназначен для всех, кто никогда раньше не проектировал доски и хотел бы попробовать.

Как зарегистрироваться на этот онлайн-курс?

Шаг 1: Зарегистрируйтесь и войдите на веб-сайт Академии FEDEVEL — нажмите здесь
Шаг 2: Выберите курс (вам нужно будет войти в систему) — нажмите здесь0005

Узнайте больше об этом курсе в этом коротком вступительном видео

Нравится:

Нравится Загрузка. ..

  • Метка
  • Ардуино

Опубликовано robertferanec

Просмотреть все сообщения пользователя robertferanec

Опубликовано

ОНЛАЙН-КУРС ПО ПРОЕКТИРОВАНИЮ ПЛАТЫ

Вы будете учиться, практикуясь в реальном проекте под названием iMX6 Rex. Включает высокоскоростную раскладку!

Подробнее об этом курсе здесь >>>

НАУЧИТЕСЬ ПРОЕКТИРОВАТЬ СВОЮ СОБСТВЕННУЮ ARDUINO
Это пошаговый онлайн-курс, в котором вы создадите свою собственную плату, подобную Arduino, — 28-контактную.

Подробнее об этом курсе здесь >>>

Код купона на скидку

Сэкономьте 50 долларов США

используйте « KFR7D2 » для

ЛЮБОЙ Онлайн и загрузка
FEDEVEL Academy Course

Discount Coupon Code

Save $30 USD

use » HKM3AC » for

ANY FEDEVEL Academy
Online Course

Discount Coupon Code

Save $30 USD

use » LEARN -ALTIUM «для

Изучение Altium Essentials
Онлайн-курс

Всего $19

Первоначальная цена: $49

Введите свой адрес электронной почты, чтобы следить за этим блогом и получать уведомления о новых сообщениях по электронной почте.

alexxlab

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

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