Почему не прошивается Arduino Pro Mini?
Обновлено Редакция GAW
У Pro Mini нет USB: скетч загружают через внешний переходник USB–TTL на шестиконтактный разъём, а принимает его загрузчик ATmegaBOOT. Он работает только короткое время после сброса, поэтому самое частое «not in sync» — загрузчик просто не запущен в тот момент, когда avrdude начинает обмен.
Как должен работать автосброс
По описанию Arduino один из выводов разъёма соединён с линией сброса ATmega328P через конденсатор 100 нФ — на схеме SparkFun это C2 0,1 мкФ на выводе DTR. Переходник опускает этот вывод перед загрузкой, микроконтроллер перезапускается, и загрузчик ждёт прошивку. Сигнал приходит с линии RTS у кабеля FTDI и с линии DTR у переходника SparkFun FTDI Basic.
Проверка по шагам
| Проверка | Что должно быть |
|---|---|
| Сброс | вывод DTR (или RTS) переходника — на вывод DTR/GRN Pro Mini; без него — ручной сброс |
| Данные | TX переходника → RXI платы, RX переходника → TXO платы |
| Земля и питание | GND к GND; VCC переходника — 3,3 или 5 В по версии платы |
| Плата в меню | Arduino Pro or Pro Mini, процессор ATmega328P (5V, 16 MHz) или (3.3V, 8 MHz) — по кварцу на плате |
| Скорость | у обоих вариантов загрузка на 57 600 бод (boards.txt 1.8.8) |
| Кабель FTDI в Windows | в свойствах порта включён Set RTS on Close |
Arduino советует совмещать надписи GRN и BLK на плате и на переходнике: на ранних платах разъём мог быть развёрнут.
Если всё подключено, а синхронизации нет
- Выбран не тот микроконтроллер. Для пунктов ATmega168 boards.txt 1.8.8 задаёт загрузку на 19 200 бод, а загрузчик Pro Mini на ATmega328P ждёт 57 600. Скорости не совпадают, и avrdude выдаёт тот же «not in sync» — до проверки сигнатуры дело не доходит. Обратная ошибка — плата на ATmega168, выбран ATmega328P — даёт тот же результат.
- Плата из партии без загрузчика. Тогда его записывают программатором ISP, как описано в ответе «Как записать загрузчик в ATmega328P».
- Драйвер переходника. Если порт не появляется вовсе, причина в драйвере моста — о CH340 есть отдельная страница CH340.
Тот же загрузчик на 57 600 бод стоит в старых Nano — поэтому у них в меню пункт «Old Bootloader», объяснённый в ответе «Почему Arduino Nano не прошивается». Чем Pro Mini отличается от Uno и Nano, разобрано в статье «Arduino Uno, Nano или Pro Mini».
Похожие вопросы
У моего переходника нет вывода DTR. Что делать?
Сбрасывать вручную: нажать кнопку сброса на Pro Mini в момент, когда в Arduino IDE после компиляции появляется «Загрузка» (Uploading). Загрузчик после сброса ждёт недолго, поэтому попадать нужно с точностью до доли секунды; иногда удобнее держать кнопку нажатой и отпустить её в этот момент.
Можно ли прошивать Pro Mini 3,3 В переходником на 5 В?
Arduino в руководстве пишет, что это, вероятно, сработает, но не рекомендует. При питании платы 3,3 В высокий уровень 5 В на входе RX выше предела из даташита ATmega328P — VCC + 0,5 В, то есть 3,8 В. Переходник с переключателем 3,3/5 В ставят в положение 3,3 В.
Плата прошилась, но delay() работает вдвое медленнее. Почему?
В меню выбрана версия на 16 МГц для платы на 8 МГц: загрузка идёт на 57 600 бод у обеих, поэтому ошибки нет, но скетч собран под чужую частоту. Выберите ATmega328P (3.3V, 8 MHz) и загрузите скетч заново.
Источники
- Arduino. Arduino Pro Mini: retired board page and Getting Started guide, repository arduino/docs-content (CC BY-SA 4.0) — две версии — 5 В и 3,3 В; USB на плате нет, нужен внешний преобразователь USB–TTL: для 3,3 В — FTDI TTL-232R-3V3 или SparkFun FTDI Basic 3,3 В, для 5 В — их 5-вольтовые версии, перекрёстное использование «вероятно, сработает, но не рекомендуется»; Automatic (Software) Reset: вывод шестиконтактного разъёма соединён со сбросом через 100 нФ, на него приходит RTS у кабеля FTDI и DTR у платы SparkFun; при открытии порта на macOS и Linux плата сбрасывается, около полсекунды работает загрузчик; кабель FTDI в Windows: включить Set RTS on Close в свойствах порта; надписи GRN и BLK на плате и переходнике должны совпасть
- Arduino. ArduinoCore-avr 1.8.8: boards.txt — pro: меню ATmega328P (5V, 16 MHz) и ATmega328P (3.3V, 8 MHz), у обоих upload.speed = 57600, загрузчики ATmegaBOOT_168_atmega328.hex и ATmegaBOOT_168_atmega328_pro_8MHz.hex, f_cpu 16 и 8 МГц; ATmega168 (5V, 16 MHz) и ATmega168 (3.3V, 8 MHz) — upload.speed = 19200; nano: atmega328 — 115 200 и Optiboot, atmega328old — 57 600 и ATmegaBOOT
- SparkFun Electronics. Arduino_Pro_Mini_328, hardware repository (commit bcf8de4, CC BY-SA 3.0) — одна плата для DEV-11113 (5 В, 16 МГц) и DEV-11114 (3,3 В, 8 МГц); вывод DTR разъёма идёт на сброс через конденсатор C2 0,1 мкФ
- Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B) — разд. 29.1 Absolute Maximum Ratings: напряжение на любом выводе, кроме RESET, — от −0,5 В до VCC + 0,5 В
Нашли ошибку?
Смотрите также
- Arduino Uno, Nano или Pro MiniРазмер, USB, питание, 3,3 и 5 В, объём скетча, сон: три платы на ATmega328P
- Почему Arduino Nano не прошивается и когда выбирать «Old Bootloader»?Старый загрузчик слушает на 57600 бит/с, Optiboot — на 115200
- CH340Мост USB–UART: исполнения, выводы, V3 при 5 и 3,3 В, скорости, уровни
- Как подключить UART к компьютеру?Переходник USB–UART, TX↔RX накрест, GND и одинаковая скорость
- Как записать загрузчик Arduino в новый ATmega328P?Программатор ISP, кварц 16 МГц, фьюзы 0xFF/0xDE/0xFD и optiboot_atmega328.hex