Почему Arduino Nano не прошивается и когда выбирать «Old Bootloader»?
Обновлено Редакция GAW
Скетч на Arduino Nano загружается не программатором, а загрузчиком внутри ATmega328P: после сброса он несколько мгновений слушает UART и, если пришла прошивка, записывает её. Скорость, на которой он слушает, у старого и нового загрузчиков разная, а среда разработки шлёт данные на той, что записана в описании платы.
Два варианта в boards.txt
| Пункт меню Processor | Скорость загрузки | Загрузчик |
|---|---|---|
| ATmega328P | 115200 бит/с | Optiboot (optiboot_atmega328.hex) |
| ATmega328P (Old Bootloader) | 57600 бит/с | старый (ATmegaBOOT_168_atmega328.hex) |
| ATmega168 | 19200 бит/с | для плат на ATmega168 |
Если скорости не совпадают, avrdude отправляет запрос синхронизации, не получает внятного ответа и после нескольких попыток сообщает, что плата не отвечает. Сам порт при этом виден, светодиод на плате мигает при сбросе — всё выглядит исправным.
Наш расчёт: у обоих пунктов допустимый размер скетча одинаков — 30720 байт, то есть 32 768 − 30 720 = 2048 байт оставлены под загрузчик; это совпадает с 2 КБ в описании Nano от Arduino.
Что делать
- Выберите Tools → Processor → ATmega328P (Old Bootloader) и загрузите снова.
- Не помогло — переключитесь обратно и проверьте порт и драйвер: разбор в ответе «Компьютер не видит Arduino Nano на CH340».
- Чтобы плата работала с обычным пунктом, запишите новый загрузчик — как это сделать, разобрано в ответе «Как записать загрузчик в ATmega328P».
Сообщения avrdude и их причины описаны в статье «avrdude», а что такое загрузчик, — в словаре.
Похожие вопросы
Как понять, какой загрузчик стоит, не открывая плату?
Проще всего попробовать оба пункта меню: тот, с которым загрузка проходит, и есть ваш. Если не проходит ни один, дело не в загрузчике — проверьте порт, драйвер USB–UART и кабель с линиями данных.
Стоит ли обновлять загрузчик?
Если плата одна и работает с пунктом Old Bootloader — необязательно. Обновление через программатор ISP записывает Optiboot, и потом подходит обычный пункт ATmega328P, как для всех новых плат. Нужен программатор или второй Arduino в роли ISP.
Почему пункт ATmega168 тоже есть в меню Nano?
Первые Nano выпускались на ATmega168. Для него в boards.txt своя скорость загрузки — 19200 бит/с — и свой файл загрузчика, поэтому с платой на ATmega328P этот пункт не сработает.
Источники
- Arduino. ArduinoCore-avr, файл boards.txt (ветка master) — nano.menu.cpu.atmega328 «ATmega328P»: upload.speed=115200, загрузчик optiboot/optiboot_atmega328.hex; nano.menu.cpu.atmega328old «ATmega328P (Old Bootloader)»: upload.speed=57600, загрузчик atmega/ATmegaBOOT_168_atmega328.hex; оба — upload.maximum_size=30720, fuse high 0xDA, low 0xFF, extended 0xFD; ATmega168 — 19200 бит/с
- Arduino. Arduino Nano Product Reference Manual (SKU A000005, modified 30/10/2026) — ATmega328 на 16 МГц, 32 КБ флеш-памяти, из них 2 КБ занимает загрузчик; питание через USB или вывод VIN 7–15 В
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P datasheet, DS40002061B — разд. 27, табл. 27-13: размер загрузочной области задают фьюзы BOOTSZ
Нашли ошибку?
Смотрите также
- AVRDUDEПрошивка AVR из командной строки: ключи, Arduino, USBasp, фьюзы, ошибки
- Как записать загрузчик Arduino в новый ATmega328P?Программатор ISP, кварц 16 МГц, фьюзы 0xFF/0xDE/0xFD и optiboot_atmega328.hex
- Почему компьютер не видит Arduino Nano с микросхемой CH340?Кабель с данными, драйвер CH341SER, VID 1A86 PID 7523, кварц 12 МГц у CH340G
- Загрузчик (bootloader)Прошивка МК без программатора через UART или USB
- Как прошить ATmega328P через другую Arduino?Скетч ArduinoISP, D10 → RESET, D11–D13 → SPI, 10 мкФ, stk500v1 на 19 200