Как прошить atmega328p через arduino uno

Как прошить atmega328p через arduino uno

vk

Вы здесь: Home Железо Arduino Программируем м/к Atmega через Arduino

Программируем м/к Atmega через Arduino

Иногда на новый м/к необходимо прошить загрузчик ,или мы хотим использовать нестандартный микроконтроллер в своих поделках,а отдельного программатора у нас нет,то тут приходит на помощь плата arduino со специально загруженным скетчем.

Подключение микроконтроллеров к плате Arduino

Напомним расположение выводов SCK,MISO,MOSI на ардуинке:

spiy

У плат серии Mega выводы SCK,MISO,MOSI находятся на других портах: 50 -MISO, 51 -MOSI , 52 -SCK , 53 — reset у программируемого м/к .

Подключаем питание на соотвествующие выводы программируемого микроконтроллера GND и VCC к Arduina , а так же соотвественно выводы SCK,MISO,MOSI.Вывод м/к Reset необходимо подключить к 10 выводу(53 у Mega) По такой схеме подключаются все м/к Atmega для программирования или просто прошивки загрузчика.

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

arduinoISP

Если Вы уже подключили программируемый микроконтроллер к плате arduino ,то можем уже заняться прошивкой,но для этого необходимо запрограммировать плату arduino в режим программатора. Для этого выбираем скетч из примеров под названием ArduinoISP:

Загружаем данный скетч в плату arduino.

Выбираем программатор arduino as ISP в меню сервис в подменю программатор.Не забываем вернуть программатор на место,когда будем программировать снова платы arduino.

arduinoISP2

Выбираем в меню свой микроконтроллер:

arduinoISP3

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

Для чего нужен загрузчик ? Установка загрузчика дает возможность напрямую ,через последовательный порт прошивать микроконтроллер (только имеющие аппаратный последовательный порт).Например так прошиваются пустые ATMEGA328P,которые потом можно использовать вместо установленной штатно микросхемы на Arduino UNO и устанавливать далее на самодельные платы.

Далее пример заливки скетча на Attiny85:

Не пугайтесь — при прошивке возможно могут появится некоторые ошибки,но они никак не влияют на сам процесс программирования:

arduinoISP5err

Далее,если мы прошиваем сам скетч (например у нас не стандартный микроконтроллер), то сейчас просто выбираем в меню файл загрузить с помощью программатора:

arduinoISP4

Обратите внимание,что прошивать необходимо именно через данный пункт меню,а не через стандартную кнопку "загрузить".

Для проверки работоспособности прошьем скетч Blink из примеров,укажем номер вывода тот,на котором будет подключен светодиод.Если указать порт номер 2 и оставить подключенный проводок SCK ,то увидим мигание светодиода на плате arduino на 13 ноге(не актуально для плат arduino Mega -там выводы SCK,MISO,MOSI находятся на других портах )

Прошивка микроконроллеров Atmega возможна и через дешевые программаторы USBasp без использования плат Arduino.Цена такого программатора всего 3 $ .Подробно тут.

Home`s Smart © 2013-2016. г.Киров.
Цитирование материалов возможно только со ссылкой на сайт. Использование фотоматериалов только с разрешения авторов.

Arduino программатор

Как прошить чип Atmega328 или Atmega168 без программатора? Для этого мы можем воспользоваться платой Arduino UNO.

И так давайте по порядку.

Для начала нам нужно загрузить скетч в наш "будущий программатор" и подготовить его для дальнейших действий.

Для этого в Arduino IDE открываем меню Файл -> Образцы -> ArduinoISP, и зальем его в Arduino UNO.

После этого нужно выбрать во вкладке Инструменты, тип платы поддерживаемой процессоры Atmega328 или Atmega168, ведь мы именно его и хотим прошить.

Ну и далее мы выбираем тип процессора который будем программировать. Я к примеру остановил выбор на Atmega328.

В этой же вкладке тип программатора выбираем AVR ISP. То есть наша плата прошитая скетчем ArduinoISP по сути делает нашу UNO программатором ISP.

Смотря на сервис мануал нашего подопытного процессора, нам надо подпаять его к нашему программатору. К примеру типоразмер TQFP32 на Atmega328 и Atmega168 одинаковы.

И глядя на верхнюю схему, подключаем наш процессор к нашему новоиспеченному программатору по нижеследующей схеме.

Ну и дальше жмем на Записать загрузчик. Arduino IDE сделает все остальное за вас. То есть установит нужные фьюзы и запишет загрузчик.

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

Далее нам нужно залить скетч в наш прошитый загрузчиком процессор. К примеру зальем простой скетч "blink", поморгаем лампочкой.

В Arduino IDE выбираем Файл -> Образцы -> Basics -> Blink. И вот самое главное: Заливать нужно не так как мы обычно заливаем скетчи, не кнопкой Вгрузить.

Заливаем через Эскиз -> Загрузить через программатор. Вот тогда ваш скетч успешно запишется в наш чип!

Как прошить atmega328p через arduino uno

Контроллер ATMEGA328P-PU

Платформа Arduino стала нынче практически мейнстримом.
В этой статье напишу о том, как собрать минимальную платформу на контроллере Amega 328P-PU, чтобы ее можно было программировать на платформе Arduino IDE.

Контроллер Atmega 328 от компании ATMEL является сердцем платформ Arduino UNO , Arduino Nano, Arduino Pro Mini и ряда других. Данные платы вместе с многочисленными «шилдами» и модулями удобны для создания прототипов, но довольно громоздки и избыточны для готовых устройств.

Конечное устройство можно собрать на макетной или печатной плате. Для этого приобретаем контроллеры Atmega. Я покупал наплощадке aliexpress.com.

Цена на момент покупки была $20 за 10 контроллеров, 10 панелек и 10 кварцевых резонаторов на 16МГц. (Сейчас цена стала немного дороже)

Буковка «P» в названии микросхемы означает низкое энергопотребление, а PU-корпус DIP28, который удобно паять обычным паяльником.

Контроллеры ATMEGA328P-PU с панельками и кварцами
Контроллер ATMEGA328P-PU. Комплет

Контроллеры пришли, как их теперь готовить?

Yеобходимо установить загрузчик в наши контроллеры. Для этого используем плату Arduino Uno и купленный заранее очень дешевый программатор USBasp. Чтобы не мудрить с проводками, лучше сразу взять еще и такой переходник на 6-ти пиновый разъем ICSP.

Описываем параметры микроконтроллера в файле c:\Program Files (x86)\Arduino\hardware\arduino\boards.txt

Для себя я сделал две конфигурации — внутренний кварц 8МГц с загрузчиком optiboot и отключенной проверкой на напряжение питания (чтобы можно было запитать микросхему вольт так от трех)

atmega328_8_33.name=Atmega328 (3.3V, 8 MHz internal)

atmega328_8_33.upload.protocol=arduino
atmega328_8_33.upload.maximum_size=30720
#atmega328_8_33.upload.speed=19200
atmega328_8_33.upload.speed=57600

atmega328_8_33.bootloader.low_fuses=0xC2
atmega328_8_33.bootloader.low_fuses=0xE2
atmega328_8_33.bootloader.high_fuses=0xDE
atmega328_8_33.bootloader.extended_fuses=0x07
atmega328_8_33.bootloader.path=optiboot
atmega328_8_33.bootloader.file=optiboot_atmega328.hex
atmega328_8_33.bootloader.unlock_bits=0x3F
atmega328_8_33.bootloader.lock_bits=0x0F

atmega328_8_33.build.mcu=atmega328p
atmega328_8_33.build.f_cpu=8000000L
atmega328_8_33.build.core=arduino
atmega328_8_33.build.variant=standard

и точная такая же с внешним кварцевым резонатором на 16МГц.

atmega328_16.name=Atmega328_16 (3.3V, 16 MHz external)

atmega328_16.upload.protocol=arduino
atmega328_16.upload.maximum_size=32256
atmega328_16.upload.speed=115200
atmega328_16.bootloader.low_fuses=0xff
atmega328_16.bootloader.high_fuses=0xde
atmega328_16.bootloader.extended_fuses=0x07
atmega328_16.bootloader.path=optiboot
atmega328_16.bootloader.file=optiboot_atmega328.hex
atmega328_16.bootloader.unlock_bits=0x3F
atmega328_16.bootloader.lock_bits=0x0F
atmega328_16.build.mcu=atmega328p
atmega328_16.build.f_cpu=16000000L
atmega328_16.build.core=arduino
atmega328_16.build.variant=standard

Аккуратно вынимаем из панельки Arduino контроллер и ставим туда наш.

Программатор USBASP + Arduino UNO

Запускам стандартную ArduinoIDE, выбираем в меню «Сервис->Программатор->USBasp», плату Atmega328 (3.3V, 8 MHz internal) или Atmega328_16 (3.3V, 16 MHz external) и нажимаем «Записать загрузчик». После окончания процесса загрузки мы получаем контроллер, в который можно уже в дальнейшем заливать программы через стандартный USB Ардуины.

В принципе, если вам не требуется низковольтное питание, можно не править фал board.txt, а пошить контроллер как Arduino Uno.

Дальнейшая работа с контроллером такая — либо шить его вставляя на плату Arduino Uno через стандартный USB порт этой платы. Прошив контроллер на работу с внутренним кварцем, можно сразу использовать его практически без всякой обвязки. Например, мигать светодиодом на 13-м порту, как на этой картинке.

Самодельный Arduino из контроллера ATMEGA328P-PU

Если же нужно постоянно использовать контроллер в своей плате, не переставляя его — то нужно собрать такую схему

Самодельный Arduino из контроллера ATMEGA328P-PU. Схема

Контроллер с внешним кварцем работает быстрее и гораздо стабильнее.

Где это уже работает?
Контроллер управления вентилятором в ванной комнате

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

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