Перепрошивка загрузчика платы Arduino Pro Mini
Перепрошивка загрузчика (bootloader) платы Arduino Pro Mini на Optiboot с использованием Arduino Mega 2560 в качестве программатора.
Необходимость в замене загрузчика возникла по причине отсутствия в оригинальной плате функционала сторожевого таймера (watchdog).
Нам потребуется
- Arduino Pro Miniна чипе ATmega328P которую мы будем перепрошивать
- Arduino Mega 2560 будем использовать в качестве программатора
- Optiboot сам загрузчик который мы будем прошивать
Подготовка среды разработки
- Заходим на GitHub проекта Optiboot жмем на “Clone or download”
- Переходим в каталог «\Мои документы\Arduino\» и создаем в нем ветку каталогов \hardware\optiboot\avr\
- Распаковываем скачанный архив. Находим каталог optiboot и переносим все его содержимое в ранее созданный каталог.
- В перенесенных файлах находим boards-1.6.txt переименовываем в boards.txt, старый файл boards.txt соответственно заменяется новым.
Запускаем срезу Arduino IDE
В меню Инструменты – плата – внизу должны появиться наши новые платы
Превращаем Arduino Mega 2560 в программатор
Жмем Файл – Примеры – ArduinoISP и у нас откроется скетч который превратит нашу плату Mega 2560 в программатор.
Подключаем Arduino Mega 2560 к компьютеру, выбираем соответствующую плату и прошиваем в него наш скетч.
После прошивки вновь заходим в меню Инструменты – программатор и выбираем Arduino as ISP
Соединяем платы между собой

- Arduino Mega 2560 выводы 50(MISO), 51(MOSI), 52(SCK), 53(SS) и 10(RESET)
- Arduino Pro Mini выводы 12(MISO), 11(MOSI), 13(SCK), 10(SS) и 29(RST), так же выводы питания GND и VCC
После того как мы все соединили в меню Инструменты жмем Записать загрузчик. Начинается процесс записи, по окончанию которого в плату будет записан новый загрузчик.
Теперь при работе мы должны выбирать плату «Optiboot on 32-pins cpus»
Как записать загрузчик в arduino pro mini
Запись загрузчика в Arduino или Iskra с помощью другой платы
Рассмотрим запись загрузчика на примере платы Iskra Neo. Для удобства назовём её исполняемой платой. В роли программатора возьмём плату Arduino Uno.
В роли программатора могут выступать не все платы Arduino. Полный список подходящих плат — в конце статьи.
Подготовка платы программатора
Откройте «Диспетчер устройств».
Подключите плату-программатор к компьютеру по USB. В диспетчере устройств раскройте вкладку «Порты (COM и LPT), найдите в ней название вашей платы программатора и запомните её номер.
Запустите среду Arduino IDE
Выберите интересующую нас плату. Для этого перейдите в меню: Инструменты Плата и выберите плату «Arduino Uno»
Укажите в Arduino IDE, на каком COM-порту находится плата-программатор. Для этого зайдите в меню: Инструменты Порт и укажите номер COM-порта.
Аналогично укажите программатор AVRISP mkIIavrisp . Зайдите в меню: Инструменты Программатор и выберите программатор «AVRISP mkII».
Откройте скетч, который сделает из платы Arduino программатор. Для этого в меню: Файл Образцы и выберите пример «ArduinoISP».
Загрузите скетч в программатор.
Теперь наша плата стала полноценным программатором.
Соединение платы программатора с исполняемой платой

Загрузчик прошивается через внутрисхемный разъём ICSP. Его распиновка представлена ниже: Соедините плату программатор с исполнительной платой согласно таблице:
| Контакты платы программатора | Контакты платы исполнителя |
|---|---|
| 1 пин разъёма ICSP | 1 пин разъёма ICSP |
| 2 пин разъёма ICSP | 2 пин разъёма ICSP |
| 3 пин разъёма ICSP | 3 пин разъёма ICSP |
| 4 пин разъёма ICSP | 4 пин разъёма ICSP |
| 10 пин контактной колодки | 5 пин разъёма ICSP |
| 6 пин разъёма ICSP | 6 пин разъёма ICSP |

Запись загрузчика
Запустите среду Arduino IDE.
Выберите интересующую нас плату исполнитель. Для этого в меню: Инструменты Плата укажите плату «Arduino Leonardo»
Проверьте, что выбранный COM-порт остался прежним. Для этого перейдите в меню Инструменты Порт .
Измените тип программатора на Arduino as ISP . Зайдите в меню Инструменты Программатор и выберите программатор «Arduino as ISP».
Теперь обе платы и среда настроены. Запишите загрузчик. Для этого в меню Инструменты выберите пункт «Записать загрузчик»
Если все шаги были пройдены правильно, на плате-программаторе начнут мигать светодиоды RX и TX . В окне статуса Arduino IDE должна появиться надпись «Запись загрузчика завершена»
У вас всё получилось. Теперь можно смело переходить к продолжению настройки платы или к экспериментам.
Как прошить Arduino Pro Mini (от А до Я)

Приветствую Вас, читатели нашего ресурса. Сегодня мы поговорим об одном контроллере из серии Arduino, а именно об Arduino Pro Mini. Это маленький, компактный контроллер, имеющий все преимущества Arduino, но при этом очень компактный, можно сказать самый маленький из всех существующих Arduino контроллеров на данный момент. Многих так же привлекает и цена его Китайский копий, а стоят они от одного до двух долларов за штуку (местами и того меньше), что так же заставляет задуматься об его приобретении. Но существует и одна проблема, его не так-то уж и просто прошить, особенно Китайские копии, которые оснащают процессором Atmel ATmega168P, которыми некогда не оснащали официальные контроллеры Arduino Pro Mini и как следствие Arduino IDE отказывается их прошивать, сообщая о неправильной сигнатуре процессора.
Вот об этом мы сегодня и поговорим. Как прошить, что для этого нужно, ну и как заставить Arduino IDE работать с китайскими копиями.
Что для этого нужно?
Arduino Pro Mini очень компактный, а компактность требует жертв и жертва это — USB интерфейс который полностью выкосили в данном контроллере т.е. подключить Pro Mini к компьютеру напрямую у вас не получится и как следствие для этого понадобится либо специальный переходник USB в TTL или другой контроллер Arduino.
Далее мы разберем три способа как прошить Pro Mini и для всех трех способов нам что-то понадобиться:
- Первый способ. Прошиваем через адаптер USB в TTL – нужен сам адаптер в количестве одной штуки.
- Второй способ. Прошиваем через Arduino UNO – нужна Arduino UNO, но не простая, а в классическом исполнении, это та Arduino, в которой процессор выполнен в DIP корпусе и вставлен в черный разъем.
- Третий способ. Прошиваем через SPI интерфейс – нужна любая Arduino: UNO, Nano, Mega, Leonardo – не важно, главное чтобы был USB разъем для подключения к ПК.
Первый способ. Прошиваем через адаптер USB в TTL
Первым и самым простым способом загрузить свой скетч в Arduino Pro Mini — это приобрести специальный адаптер USB в TTL или как его называют UART переходник. Как правило, этот переходник это и есть та часть, которую вырезали из Arduino Nano, превратив ее в Arduino Pro Mini. Стоимость подобных переходников копеечная, а выбор и того больше. Китайцы наштопали их столько, что глаза разбегаться какой из них выбрать. При этом цена сего девайса не более одного вечно зеленого. После того как вы соедините Pro Mini и UART переходник проводами или шлейфом, остаётся только воткнуть его (переходник) в ПК, установить драйвер (не для всех переходников они требуются) и на этом собственно все. Ваш ПК определит переходник как очередной COM-порт, который появляется при подключении любой Arduino к ПК. Выбираете его, плату, с которой будете работать (Arduino Pro Mini) и спокойно загружаете свой скетч.
Единственным нюансом в данных переходниках, является наличие или отсутствие контактов RST или DTR. Рекомендую покупать переходники, на которых эти контакты есть. Они значительно упрощают жизнь и делают процесс прошивки беспроблемным. Если же вы купили уже переходник, на котором подобных контактов нет, то при каждой загрузке скетча в Arduino вам придется нажимать на кнопку Reset, что не всегда получается сделать вовремя, и это вносит свои неудобства.
Подключение переходник вы можете посмотреть по таблице ниже:

| USB в TTL (UART) | Arduino Pro Mini |
|---|---|
| RX | RX |
| TX | TX |
| GND | GND |
| 5V | VCC |
| RST или DTR или GRN | RST или DTR |
Второй способ. Прошиваем через Arduino UNO
Для этого способа нам понадобиться классическая Arduino UNO. Классическая эта та, в которой корпус микросхемы выполнен в DIP корпусе и вставлен в специальный разъем. Вот эту микросхему нам надо аккуратно поддеть отверткой. Тут важно не сломать процессор, поддевайте аккуратно, не погнув ноги.
Arduino UNO. Процессор выполнен в DIP корпусе.
Аккуратно поддеваем и вытаскиваем процессор отверткой.
После того как мы вытащили процессор из Arduino UNO мы по сути получили тот самый переходник USB в TTL, осталось только соединить проводами наш новый переходник и Arduino Pro Mini по следующей схеме:

| Arduino UNO (без процессора) | Arduino Pro Mini |
|---|---|
| RX | RX |
| TX | TX |
| GND | GND |
| 5V | VCC |
| RST | RST |
После того как вы соединили две Arduino воедино, можно приступать к прошивке Arduino Pro Mini. Подключаем Arduino UNO по USB к ПК. Выбираем в настройках Arduino IDE COM-порт, указываем, что мы теперь работаем не с Arduino UNO, а с Arduino Pro Mini и все, заливаем наши скетчи. Способ довольно интересный, если вы не боитесь испортить Arduino и рядом не оказалось переходника USB в TTL.
Третий способ. Прошиваем через SPI интерфейс

Третьим и самым неудобным способом загрузить свой скетч в Arduino Pro Mini это прошить его при помощи ICSP интерфейса. Данный интерфейс присутствует на большинстве плат Arduino. Основные контакты данного интерфейса выведены на порты с 10 по 13, а так же выведены отдельно в виде шести контактной колодки с подписью ICSP. Располагается колодка, как правило, в центральной правой части Arduino.
Прошивка Arduino Pro Mini в этом случае делиться на два этапа:
- Прошивка платы Arduino как ISP программатора.
- Настройка Arduino IDE и загрузка скетча в Arduino Pro Mini.
Первым делом мы должны подготовить наш будущий программатор. Возьмем для примера всю туже Arduino UNO. Далее пошагово:
- Запускаем Arduino IDE.
- Файл — Примеры — 11.ArduinoISP — ArduinoISP.
- Инструменты — Плата — Arduino UNO.
- Инструменты — Порт — Выбираем COM-порт.
- Компилируем и заливаешь в Arduino UNO.
Далее нам необходимо соединить две Arduino проводами по следующей схеме:
| Arduino UNO (ISP) | Arduino Pro Mini |
|---|---|
| 5V | VCC |
| GND | GND |
| 10 | RST |
| 11 (MOSI) | 11 (MOSI) |
| 12 (MISO) | 12 (MISO) |
| 13 (SCK) | 13 (SCK) |
Теперь опять открываем Arduino IDE. Открываем в ней скетч который вы хотите залить в Pro Mini и выполняете следующие действия:
2. Инструменты — Плата — Arduino Pro Or Pro Mini
3. Инструменты — Процессор — ATmega168 (5V, 16 MHz)
4. Инструменты — Порт — Выбираете порт
5. Инструменты — Программатор — Arduino as ISP
6. Скетч — Загрузить через программатор
Как видите загружать скетч в этом режиме надо через специальное меню «Загрузить через программатор», а не через кнопку «Загрузить» на главной форме Arduino IDE. В этом и связано все неудобство. Если вы нажмете кнопку «Загрузить» как это делаете обычно, то вы зальете скетч в Arduino UNO, а не Arduino Pro Mini, что затрет там скетч программатора. Так же в этом режиме недоступен класс Serial, то есть отлаживать свой скетч обмениваясь сообщениями по COM-порту у вас так же не получится. Ну и еще одна ложка дегтя в том, что после данной перепрошивки, в большинстве случаев, перепрошить Arduino Pro Mini через переходник у вас так же больше не получиться. Исправляется это заливкой нового bootloader-а через меню «Инструменты» — «Записать Загрузчик».
Добавляем китайский Pro Mini в Arduino IDE
Как я уже говорил в данной статье, Китайские клоны порой оснащают процессорами которыми не оснащали официальные версии Arduino Pro Mini и как следствие при прошивке их вы можете увидеть следующую или подобную ошибку.
Исправляется это легко:
- Для начала необходимо открыть папку в которой расположена Arduino IDE.
- Затем переходим в следующую папку «Папка с Arduino IDE\hardware\arduino\avr\».
- Ищем там файл «boards.txt» и открываем его в текстовом редакторе.
- Ищем в файле следующую строку «pro.menu.cpu.16MHzatmega168.build.mcu=atmega168».
- И заменяем ее на «pro.menu.cpu.16MHzatmega168.build.mcu=atmega168p».
- Перезапускаем Arduino IDE и на этом все.
- Если у вас к примеру 328 процессор то делаем все так же, только ищем строку с цифрами 328.
Заключение
В данной статье я привел аж три варианта загрузки скетчей в Arduino Pro Mini. Лично я использую второй. Мне он больше нравиться.
Что будете использовать вы — выбирать вам. Оставьте в комментарии какой вариант вы предпочитаете.
Перепрошивка загрузчика платы Arduino Pro Mini
Необходимость в замене загрузчика возникла по причине отсутствия в оригинальной плате функционала сторожевого таймера (watchdog).
Нам потребуется
- Arduino Pro Miniна чипе ATmega328P которую мы будем перепрошивать
- Arduino Mega 2560 будем использовать в качестве программатора
- Optiboot сам загрузчик который мы будем прошивать
Подготовка среды разработки

- Заходим на GitHub проекта Optiboot жмем на “Clone or download”
- Переходим в каталог «\Мои документы\Arduino\» и создаем в нем ветку каталогов \hardware\optiboot\avr\
- Распаковываем скачанный архив. Находим каталог optiboot и переносим все его содержимое в ранее созданный каталог.
- В перенесенных файлах находим boards-1.6.txt переименовываем в boards.txt, старый файл boards.txt соответственно заменяется новым.
Запускаем срезу Arduino IDE
В меню Инструменты – плата – внизу должны появиться наши новые платы

Превращаем Arduino Mega 2560 в программатор
Жмем Файл – Примеры – ArduinoISP и у нас откроется скетч который превратит нашу плату Mega 2560 в программатор.

Подключаем Arduino Mega 2560 к компьютеру, выбираем соответствующую плату и прошиваем в него наш скетч.
После прошивки вновь заходим в меню Инструменты – программатор и выбираем Arduino as ISP

Соединяем платы между собой
- Arduino Mega 2560 выводы 50(MISO), 51(MOSI), 52(SCK), 53(SS) и 10(RESET)
- Arduino Pro Mini выводы 12(MISO), 11(MOSI), 13(SCK), 10(SS) и 29(RST), так же выводы питания GND и VCC
После того как мы все соединили в меню Инструменты жмем Записать загрузчик. Начинается процесс записи, по окончанию которого в плату будет записан новый загрузчик.
Теперь при работе мы должны выбирать плату «Optiboot on 32-pins cpus»
Bootloader
Microcontrollers are usually programmed through a programmer unless you have a piece of firmware in your microcontroller that allows installing new firmware without the need of an external programmer. This is called a bootloader.
Not Using a Bootloader
If you want to use the full program space (flash) of the chip or avoid the bootloader delay, you can burn your sketches using an external programmer.
Burning the Bootloader
To burn the bootloader, you’ll need to buy an AVR-ISP (in-system programmer), USBtinyISP or build a ParallelProgrammer. The programmer should be connected to the ICSP pins (the 2 by 3 pin header) — make sure you plug it in the right way. The board must be powered by an external power supply or the USB port.
Make sure you have the right item selected in the Tools | Board menu. Then, just launch the appropriate command from the Tools > Burn Bootloader menu of the Arduino environment. Burning the bootloader may take 15 seconds or more, so be patient.
Bootloading an Arduino Mini
Here are some instructions on bootloading the Mini, thanks to Gian Pablo Vilamil.
It Still Doesn’t Work! (Parallel Programmer on Windows XP)
Windows XP may be polling your parallel port and disrupting the bootloader burning process. You’ll need this registry patch:
Versions of the Bootloader
There are different versions of the bootloader — both in order to work on different hardware and because it has changed over time.
The current bootloaders (i.e. the ones included in Arduino 0009) are almost identical for the Diecimila and NG (with ATmega168). They both run at 19200 baud and take up 2 KB of flash memory on the ATmega168. The only differences is the time the bootloader waits for a new program to arrive and the number of times it flashes the pin 13 LED when it starts. Because of the automatic reset on the Diecimila, its bootloader only waits a very short amount of time (less than a second) — to save time, it also flashes the pin 13 LED once. The NG bootloader waits about 6-8 seconds and flashes the LED three times.
The bootloader that actually shipped on the Arduino NG is slightly different. It enables the internal pullup resistor on pin 6, and doesn’t enable the internal pullup on the RX pin. Nor does it timeout upon receiving invalid data, so if you send data to it immediately after it resets, your sketch will never start.
The Arduino BT bootloader does some initial configuration of the Bluetooth® module.
The ATmega8 bootloader only takes up 1 KB of flash. It does not timeout when it receives invalid data, you need to make sure that no data is sent to the board during the 6-8 seconds when the bootloader is running.
Some ancient versions of the bootloader run at 9600 baud (instead of 19200). In order to successfully upload sketches to boards with this bootloader, you’ll need to change the serial.download_rate in your preferences file to 9600.
Third parties have also worked on the bootloader. This page is link to some other bootloader development
How Does it Work?
The «Burn Bootloader» commands in the Arduino environment use an open-source tool, avrdude. There are four steps: unlocking the bootloader section of the chip, setting the fuses on the chip, uploading the bootloader code to the chip, and locking the bootloader section of the chip. These are controlled by a number of preferences in the Arduino preferences file.
For the ATmega8 bootloader, these are:
- bootloader.atmega8.programmer (default value: stk500) is the protocol used by the bootloader.
- bootloader.atmega8.unlock_bits (default value: 0xFF) is the value to write to the ATmega8 lock byte to unlock the bootloader section.
- bootloader.atmega8.high_fuses (default value: 0xca) is the value to write to the high byte of the ATmega8 fuses.
- bootloader.atmega8.low_fuses (default value: 0xdf) is the value to write to the low byte of the ATmega8 fuses.
- bootloader.atmega8.path (default value: bootloader) is the path (relative to the Arduino application directory) containing the precompiled bootloader.
- bootloader.atmega8.file (default value: ATmegaBOOT.hex) is the name of the file containing the precompiled bootloader code (in bootloader.path).
- bootloader.atmega8.lock_bits (default value: 0x0F) is the value to write to the ATmega8 lock byte to lock the bootloader section (so it doesn’t get accidentally overwritten when you upload a sketch).
For the ATmega168, these are (where is either «diecimila» or «ng»):
Похожие публикации:
- Для чего node js
- За что на веб странице отвечает css
- Как сделать скролл внутри блока css
- Как сделать стрелки в css
Как записать загрузчик в arduino pro mini

Arduino Pro Mini весьма привлекательная плата из семейства Ардуино в первую очередь маленькими габаритами и ценой.
Зачем перезаписывать загрузчик
- Если загрузчик «слетел» и плата не прошивается. Выдает всегда: «avrdude: stk500_recv(): programmer is not responding».
- Если вы решили разобраться со сторожевым таймером, как в этой статье, и использовать для этого OPTIBOOT.
- Если нужно переустановить ФЬЮЗ-биты, например, как в моем случае, отключить контроль напряжения питания для того чтобы запитать плату от 3.3В
- Или же вы решили совсем убрать загрузчик с целью экономии памяти и увеличения скорости загрузки, тогда вместо загрузчика заливается ваша программа по нулевому адресу.
Что для этого нужно
- Недорогой программатор USBASP
- Стандартные проводочки для подключения модулей к платам Arduino
- Драйвер USBASP (если программировать по Windows)
- Среда разработки Arduino IDE
Подключение
Все Arduino имеющие 6-пиновый IСSP разъем подключаются к программатору через такой переходник
Arduino Pro Mini ICSP на плате не имеет, поэтому подключаем проводками по следующей схеме

Подключаем программатор к USB компьютера, устанавливаем драйвер USBAsp (если он еще не установлен) и запускам среду Arduino IDE

Выбираем тип программатора USBASP

Выбираем тип контроллера. Если мы хотим просто восстановить загрузчик — выбираем Arduino Pro Mini 5В (или 3.3В в зависимости от платы). Если нам нужен OPTIBOOT без лишней головной боли — выбираем Arduino UNO

Затем жмем «Записать загрузчик»

Если все подключено и настроено правильно, то программатор довольно долго мигает лампочками.
Настройка параметров загрузчика
Последнее время применяю Aduino Pro Mini 5В с модулями NRF24L01+, требующих для питания 3.3В. Для питания таких плат от низкого напряжения нужно отключить во фьюзах контроль напряжения питания. Для этого открываем файл c:\Program Files (x86)\Arduino\hardware\arduino\boards.txt и прописываем в нем характеристики желаемой прошивки:
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
После этого шьем выбираем тип контроллера «Atmega328_16 (3.3V, 16 MHz external)» и пишем загрузчик.
Программируя «перешитый» Arduino Pro Mini через стандартный порт не нужно забывать устанавливать нужный тип контроллера
Posted in Arduino, Технологии | Метки: Arduino, ATMEGA328, USBASP
Вы можете оставить отзыв или трекбек со своего сайта.
44 комментария на «Перезапись загрузчика в Arduino Pro Mini»
Alexey :
Да. Только там штырьки в ряд а не в два ряда, как в стандартном разъеме
Поэтому все равно проводочками соединять
Вы не правы, Alexey. контакты ICSP расположены в 2 ряда. Маркировка есть на обратной стороне платы (по выложенному мной лоту видно на третьей фотографии).
Alexey :
Да. Увидел. Очень нечеткая картинка.
Интересный дизайн. Еще бы на нем поставили 3.3 стабилизатор и вывели бы на I2C
Добрый день. Хотел спросить, правильно ли я понял, у вас arduino pro mini 5 вольтная версия, вы её как бы сделали 3 вольтной. При этом стабилизатор остался старый, кварц на 16 Мгц, и запитываете это всё напрямую в обход стабилизатора на плате 3.3 Вольтами. Интересуюсь дотошно ибо хочу сделать из arduino pro micro тоже (только стаб перепаяю)
Alexey :
Да все так.
Я поменял фьюз-бит контроля напряжения питания на контроллере, иначе он отключался при низком напряжении.
По даташиту еще рекомендуют понизить тактовую частоту, но у меня на 16МГц стабильно все работает.
При напряжении питания 3.3В не вижу в стабе вообще смысла.
Спасибо за ответ, будем пробовать.
Доброго времени суток.
Не подскажите как определить на какое питание ардуина, заказал несколько штук, пришли по виду одинаковые или не замораживаться и сразу прошивать на 3 вольта?
Спасибо и всего доброго.
Alexey :
Платы немного отличаются дизайном.
Но у них и 5-вольтовых разный дизайн от версии к версии.
Самый простой способ подключить к IDE Arduino. Подать 5В через USB. 3-х вольтовый от 5В тоже работает.
И попробовать залить скетч выбирая нужную плату.
Подскажи, плиз, как убрать загрузчик вовсе? Нужно для быстрого старта, сразу после подачи питания
arduino pro mini 5v
Перестала прошиваться pro mini 328 5v 16Мгц как через ftdi,так и через AVRasp (isp) программаторы.Пытался залить через ISP загрузчик,процесс пошел,а потом прирвался и выкидывал ошибки вида: avrdude: stk500_recv(): programmer is not responding» и avrdude: verification error, first mismatch at byte 0x1c00
0x12 != 0xff
avrdude: verification error; content mismatch.
Раньше при тех же инструментах/манипуляциях проблем не было.
Менял:кабели,программаторы,среду обновлял — не помогло. Ардуино mega 2560 при тех же инструментах шьется нормально.
Alexey :
Может фьюзы попротились?
Как их откатить/восстановить?
Alexey :
Добрый день.
Если прошить в про мини бутлоадер ему это не повредит? Будет работать watchdog? И какую плату надо будет выбирать в студии для заливки скетча ?
бутлоадер от Uno
Alexey :
Бутлоадер от UNO это optoboot поддерживающий нормально сторожевой таймер.
На Pro Mini будет работать (если контроллер Atmega328p), только потом нужно карту выбирать при загрузке скетчей — Uno.
Спасибо за информацию. Надо будет попробовать. Никаких подводных камней не наблюдается при этом?
Alexey :
Не заметил
Благодарю за информацию
Вроде залился бутлодырь))Пасиб за информацию!
На картинке подключения USBasp не перепутаны выводы MOSI,MISO?Судя по распиновке вывод дуины 11 соответствует выводу 16 МК, а это MISO,который почему то на 12 выводе дуины…Можь надо исправить?
Alexey :

Да вроде все нормально. У Atmega 8/168/328 MOSI — DIO11, MISO — DIO12
Привет.
Понимаю, что тема сообщения другая. Перебросьте туда, где ему положено быть, если сообщение мешается здесь.
Только начал изучать Ардуино и вот что-то непонятное произошло — после загрузки скетча «мерцание» (в RobotDyn UNO) всё стало работать как и должно, но… теперь мерцает всегда. Ничего не позволяет в себя загрузить.
Проинструктируйте, пожалуйста.
Alexey :
Не совсем понятно что за «мерцание». Не загружаться может по разным причинам. 1. работает сторожевой таймер отправляя Ардуину в циклическую перезагрузку. Здесь можно попытаться поймать момент загрузки (в Ардуино IDE в логе нужно смотреть вывод) и успеть перед ним нажать РЕСЕТ 2. Слетел загрузчик или фьюзы. Тут нужно использовать ICSP разъем для внутрисхемного программирования и восстановить загрузчик и фьюзы, например, так как описано в этой статье. Можно это сделать при помощи другого Ардуино и 6-ти проводков. 3. Неисправная Ардуино. Сгорела микросхема USB/TTL конвертера. В этом случае, если еспи чип рабочий, то его можно будет программировать, но только опять же через ICSP. Если неисправно что-то другое — чинить или выкинуть
спасибо
мерцание — blink
Вы правы. Я допустил вольный (привычный мне) перевод. После посмотрел в интернет, везде переводится как «мигание, моргание» в связке с Ардуино. Извиняюсь. Мне стоило использовать язык оригинала.
После переустановки пакета версии 1.7.11 с офсайта пропали сообщения об ошибках ld.exe. Это радует, потому что, изменяя в скетче «blink» параметры delay теперь, можно видеть, что светодиод на плате слушается команд.
А раньше (при попытке загрузить скетч) компилятор выдавал ошибку — и всё тут.
Теперь при загрузке другого скетча проскочило такое сообщение:
avrdude: ser_open(): can’t open device «\\.\COM1»: Не удается найти указанный файл.
Хотя порт выбран СОМ4 и скетч «blink» по нему загрузился без ошибок
Alexey :
В Arduino IDE
Файл -> Настройки
Установить галку «Показать подробный вывод: Загрузка»
Можно посмотреть подробно, что делает/пытается сделать IDE.
Я сижу на версии 1.6.5, так как она корректно работает с ESP8266. Может быть это особенности 1.7
спасибо.
выставил маркер, где вы указали.
займусь анализом подробных выводов.
Скажите пожалуйста Уважаемый.
У Вас и не только(много примеров в интернете)
для отключения проверки уровня напряжений, используется в Extended Fuse = 0x07
При попытке прошить, дудка(Avrdude) то ли ругается, то ли предупреждает и предлагает вариант для Extended fuse прописать 0xFF
И действительно, в различных он-лайн калькуляторах для проца 328P, в Extended фьюзах, только младшие 3 бита отвечают за контроль напряжения(BODLEVEL), а остальные 5 бит вообще свободны и никуда не используются. Почему же тогда везде советуют делать 0x07? Какой смысл выставлять в 0 старшие 5 бит, если они никуда не нужны? Почему не 0xFF, на чeм настаивает дудка? Развейте мои сомнения, пожалуйста, помогите чайнику. Заранее спасибо.
Alexey :
Вы правы. Там только 3 байта значащие
Это калькулятор ставит 0xFF как нравится дудке )))
http://www.engbedded.com/fusecalc/
Я скорее всего где то тоже из примеров взял фьюзы. Проверил — они не противоречат правильной конфе. Так и копируются по всему интернету
А можно еще пару вопросов? Наверняка ламерские, но не обессудьте? Я совсем чайник и прошу быть снисходительным и тапками не закидывать. Я в вашем МК-мире, от силы, недели две.
1. При прошивке скетча в среде Ардуино, каждый раз прошивается только скетч или и загрузчик тоже? И отличается ли процесс прошивки, если шить скетч программатором из Экслипса, Дудкой, по сравнению с Ардуиной? В Ардуине не видно команд и процесса прошивки Дудкой в реальном времени. Когда прошивал через программатор из Экслипса, обратил внимание(там все видать в натуре), что в командной строке Дудки был ключ -D, т.е. предварительная очистка флэша. Это имеется ввиду полная очистка контроллера или бутлоадер остается? Как ФайлСкетча.HEX знает, где ему размещаться, где заканчивается бутлоадер? И не стерся ли бутлоадер, который я сначала прошивал отдельно из командной строки, подглядев предварительно, как она выглядит при прошивке из Экслипса. А если бутлоадер не родной, а в частности Optiboot для Pro Mini? Ткните носом пожалуйста, где про всю эту кухню почитать, как все это организуется? Желательно по русски и простым языком.
2. Как во фьюзах выбирать параметры BOOTSZ, Boot Flash Sector Size, сколько слов и адрес? Почему в калькуляторе фьюзов, при выборе разного размера этих самых слов, Boot Start Address изменяется, странными значениями $3F00, $3C00, $3800? Разве стартовый адрес загрузчика не начинается от нулевого адреса и почему он(стартовый адрес) зависит от длины бутлоадера? И почему, если выбираешь бутлоадер длиннее, то адрес меньше? Size=256 words — address = $3F00, а когда 2048 words, address= $3800 Как все это понимать? Заранее спасибо.
Alexey :
Бутлоадер может переписывается только если работать через программатор. Когда программа заливается через бутлоадер, то сам бутлоадер затереть невозможно, также как и изменить фьюзы. В этом и прелесть Ардуины в отличии от «голых» микроконтроллеров. Для того чтобы полностью видеть процесс загрузки:
Файл -> Настройки ->Показать подробный вывод ->Загрузки (поставить галочку) Фьюзы, размер загрузчика, начальный адрес и как это все организуется прописывается в файле board.txt для данного контроллера. $3F00 = 16128
$3800 = 14336
наводит на мысль, что это размер памяти основной программы (общий размер памяти — размер загрузчика)
Спасибо за ответ. У меня Линукс и в его ArduinoIDE, почему-то нет такой опции, выбрать просмотр процесса прошивки. Т.е. если я шью через Ардуину, я фактически шью только саму основную прогу, а если через программатор, то как мне знать, остался ли бутлоадер? А зачем он вообще тогда нужен? Какая его главная функция, если и без него можно прошить саму программу и будет работать?
Похоже, Вы правы. Вот цитата с сайта http://www.getchip.net/posts/104-proshivka-lyubogo-hex-fajjla-v-arduino-pri-pomoshhi-shtatnogo-zagruzchika-bootloader/ Теперь стало понятно про адресацию из калькуляторов фьюзов, при разных размерах загрузчика.
День добрый ! Подскажите,как убрать загрузчик из ардуино, как необходимо изменить при этом файлы Arduino IDE? А то в начале статьи упоминается в 4м пункте как загрузчик удалить, а в самой статье об этом ни слова! Спасибо.
Здравствуйте, для плат pro mini на чипе 168 это актуально?
Alexey :
Да. Только в board.txt соответствующий контроллер нужно выбрать
здравствуйте.
не могли бы Вы ликвидировать мою безграмотность вот в каком вопросе. имеется атмега 328р-au 20 мгц можно ли ее прошить используя в качестве ардуино уно в качестве программатора?
Alexey :
Как залить HEX файл в Arduino Due R3 без Arduino IDE желательно, хотя не обязательно?
И еще, где взять проверенный файл загрузчика для UNO и DUE?
Алексей, изучая вашу статью, обнаружил (как мне кажется) ошибку в примере:
«atmega328_16.bootloader.extended_fuses=0?07»
мне кажется что в конце строки должно быть 0x07.
Правда непонятно зачем вообще отключать контроль питания. Поставить 0х05 — 2,7 вольт и все будет соответствовать вашим желанием питаться от 3,3в
Alexey :
Спасибо, исправил.
По поводу 2.7В — cейчас проектами занимаюсь с питанием от двух AA. 2.7 явно маловато
Arduino Pro Mini
This board was developed for applications and installations where space is premium and projects are made as permanent set ups. Small, available in 3.3 V and 5 V versions, powered by ATmega328P.
LAST REVISION: 11/15/2023, 03:52 PM
Note: This page refers to a product that is retired.

The Arduino Pro Mini is a microcontroller board based on the ATmega328P.
It has 14 digital input/output pins (of which 6 can be used as PWM outputs), 6 analog inputs, an on-board resonator, a reset button, and holes for mounting pin headers. A six pin header can be connected to an FTDI cable or Sparkfun breakout board to provide USB power and communication to the board.
The Arduino Pro Mini is intended for semi-permanent installation in objects or exhibitions. The board comes without pre-mounted headers, allowing the use of various types of connectors or direct soldering of wires. The pin layout is compatible with the Arduino Mini.
There are two version of the Pro Mini. One runs at 3.3V and 8 MHz, the other at 5V and 16 MHz.
The Arduino Pro Mini was designed and is manufactured by SparkFun Electronics.
You can find here your board warranty information.
Getting Started
You can find in the Getting Started section all the information you need to configure your board, use the Arduino Software (IDE), and start tinker with coding and electronics.
Need Help?
- On the Software on the Arduino Forum
- On Projects on the Arduino Forum
- On the Product itself through our Customer Support
Documentation
OSH: Schematics
Arduino Pro Mini is open-source hardware! You can build your own board using the following files:
Power
The Arduino Pro Mini can be powered with an FTDI cable or breakout board connected to its six pin header, or with a regulated 3.3V or 5V supply (depending on the model) on the Vcc pin. There is a voltage regulator on board so it can accept voltage up to 12VDC. If you’re supplying unregulated power to the board, be sure to connect to the «RAW» pin on not VCC.
The power pins are as follows:
RAW For supplying a raw voltage to the board.
VCC The regulated 3.3 or 5 volt supply.
GND Ground pins.
Memory
The ATmega328P has 32 kB of flash memory for storing code (of which 0.5kB is used for the bootloader). It has 2 kB of SRAM and 1kBs of EEPROM (which can be read and written with the EEPROM library.
Input and Output
Each of the 14 digital pins on the Pro Mini can be used as an input or output, using pinMode,digitalWrite, and digitalRead functions. They operate at 3.3 or 5 volts (depending on the model). Each pin can provide or receive a maximum of 40 mA and has an internal pull-up resistor (disconnected by default) of 20-50 kOhms. In addition, some pins have specialized functions:
- Serial: 0 (RX) and 1 (TX). Used to receive (RX) and transmit (TX) TTL serial data. These pins are connected to the TX-0 and RX-1 pins of the six pin header.
- External Interrupts: 2 and 3. These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value. See the attachInterrupt function for details.
- PWM: 3, 5, 6, 9, 10, and 11. Provide 8-bit PWM output with the analogWrite function.
- SPI: 10 (SS), 11 (MOSI), 12 (MISO), 13 (SCK). These pins support SPI communication, which, although provided by the underlying hardware, is not currently included in the Arduino language.
- LED: 13. There is a built-in LED connected to digital pin 13 . When the pin is HIGH value, the LED is on, when the pin is LOW, it’s off.
The Pro Mini has 8 analog inputs, each of which provide 10 bits of resolution (i.e. 1024 different values). Four of them are on the headers on the edge of the board; two (inputs 4 and 5) on holes in the interior of the board. The analog inputs measure from ground to VCC. Additionally, some pins have specialized functionality:
- I2C: A4 (SDA) and A5 (SCL). Support I2C (TWI) communication using the Wire library.
There is another pin on the board:
- Reset. Bring this line LOW to reset the microcontroller. Typically used to add a reset button to shields which block the one on the board.
Communication
The Arduino Pro Mini has a number of facilities for communicating with a computer, another Arduino, or other microcontrollers. The ATmega328P provides UART TTL serial communication, which is available on digital pins 0 (RX) and 1 (TX). The Arduino software includes a serial monitor which allows simple textual data to be sent to and from the Arduino board via a USB connection.
A SoftwareSerial library allows for serial communication on any of the Pro Mini’s digital pins.
The ATmega328P also supports I2C (TWI) and SPI communication. The Arduino software includes a Wire library to simplify use of the I2C bus; see the reference for details. To use the SPI communication, please see the ATmega328P datasheet.
Programming
The Arduino Pro Mini can be programmed with the Arduino software download. For details, see the reference and tutorials.
The ATmega328P on the Arduino Pro Mini comes preburned with a bootloader that allows you to upload new code to it without the use of an external hardware programmer. It communicates using the original STK500 protocol reference , C header files.
You can also bypass the bootloader and program the ATmega328P with an external programmer; see these instructions for details.
Automatic (Software) Reset
Rather then requiring a physical press of the reset button before an upload, the Arduino Pro Mini is designed in a way that allows it to be reset by software running on a connected computer. One of the pins on the six-pin header is connected to the reset line of the ATmega328P via a 100 nF capacitor. This pin connects to one of the hardware flow control lines of the USB-to-serial converter connected to the header: RTS when using an FTDI cable, DTR when using the Sparkfun breakout board. When this line is asserted (taken low), the reset line drops long enough to reset the chip. The Arduino software uses this capability to allow you to upload code by simply pressing the upload button in the Arduino environment. This means that the bootloader can have a shorter timeout, as the lowering of the reset line can be well-coordinated with the start of the upload.
This setup has other implications. When the Pro Mini is connected to either a computer running Mac OS X or Linux, it resets each time a connection is made to it from software (via USB). For the following half-second or so, the bootloader is running on the Pro. While it is programmed to ignore malformed data (i.e. anything besides an upload of new code), it will intercept the first few bytes of data sent to the board after a connection is opened. If a sketch running on the board receives one-time configuration or other data when it first starts, make sure that the software with which it communicates waits a second after opening the connection and before sending this data.
Physical Characteristics
The dimensions of the Pro Mini PCB are approximately 0.7″ x 1.3″.
Tech Specs
| Microcontroller | ATmega328P * |
| Board Power Supply | 3.35 -12 V (3.3V model) or 5 — 12 V (5V model) |
| Circuit Operating Voltage | 3.3V or 5V (depending on model) |
| Digital I/O Pins | 14 |
| PWM Pins | 6 |
| UART | 1 |
| SPI | 1 |
| I2C | 1 |
| Analog Input Pins | 6 |
| External Interrupts | 2 |
| DC Current per I/O Pin | 40 mA |
| Flash Memory | 32KB of which 2 KB used by bootloader * |
| SRAM | 2 KB * |
| EEPROM | 1 KB * |
| Clock Speed | 8 MHz (3.3V versions) or 16 MHz (5V versions) |
Older boards were equipped with ATmega 168 with this specs:
- Flash memory: 16 KB
- SRAM: 1 KB
- EEPROM: 512 bytes

