Перейти к содержанию

Почему не прошивается 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) и загрузите скетч заново.

Источники

  1. 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 на плате и переходнике должны совпасть
  2. 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
  3. 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 мкФ
  4. Microchip. ATmega48A/PA/88A/PA/168A/PA/328/P Data Sheet (DS40002061B) — разд. 29.1 Absolute Maximum Ratings: напряжение на любом выводе, кроме RESET, — от −0,5 В до VCC + 0,5 В

Нашли ошибку?