Я заложил свой Arduino Uno? Проблемы с загрузкой на борт

86

Я не могу загрузить эскизы на Arduino Uno.

  • Я "заложил" это?
  • Какие шаги я могу предпринять, чтобы понять, что не так?
  • Что я могу сделать, чтобы это исправить?
Ник Гаммон
источник
7
Для тех, кто интересуется, это не актуальный вопрос! Это скорее справочный вопрос. Сам вопрос специально сделан достаточно широким. Ответ, однако, очень подробный, и поэтому этот вопрос может быть использован в качестве справочного материала.
Пол
2
Это скорее справочный вопрос. Совершенно верно. Смотрите , можно задавать вопросы и отвечать на них .
Ник Гэммон
@Nick_Gammon Да. Но я чувствую, что вы как-то должны были это где-то заметить. На первый взгляд меня (немного) раздражает тот факт, что вопрос был настолько широким, и казалось, что вы не проводили никаких исследований. Но когда я увидел твой ответ, все это имело смысл. Кроме того, (когда вы можете) вы не должны забывать принять свой собственный ответ, чтобы другие, кто пытается помочь, не стали отвечать на вопросы, изучать или комментировать вопросы (которые на самом деле не помогут вам, поскольку вы уже нашел довольно хороший способ отладки этой проблемы).
Пол
Спасибо за ответ. Сначала я хотел написать вопрос с пометкой, что собираюсь опубликовать свой собственный ответ, но потом увидел флажок «ответить на свой вопрос», поэтому вместо этого поставил галочку. Что касается принятия, мне не разрешено в течение 20 часов. Мне показалось немного странным принять твой собственный ответ, но, конечно, я могу сделать это, когда мне позволят. Я задал вопрос о Meta Arduino. Что такое канонический вопрос? попытаться выработать правильную процедуру, но не получил ответов.
Ник Гэммон
@FuaZe и Ник Гэммон: В общем, это кажется великолепным, единственное, что я бы хотел сделать, это сделать предмет более наводящим на размышления о том, о чем на самом деле вопрос и ответ. На самом деле, я думаю, у меня могло возникнуть соблазн сделать это слишком расплывчатым. Возможно, заголовок может быть «Как я могу устранить неполадки при неудачной загрузке?»
Ду

Ответы:

115

Это, вероятно, не заложено

У меня есть довольно много Arduinos, и за последние несколько лет только когда-либо "кирпичную" одну, и я думаю, что это было от удара электрическим током. К сожалению, этот конкретный чип имел поверхностный SMD-процессор, поэтому попробовать заменить его другим чипом нелегко.

Сохраняйте спокойствие и попробуйте следующие шаги ...


Пример платы

«Arduino Uno» - это не единственная вещь, которая может потерпеть неудачу. Он имеет несколько основных компонентов, и, возможно, только один из них вышел из строя (если есть). Смотрите эту справочную фотографию:

Arduino Uno основные компоненты

Основные компоненты:

  • Процессор Atmega16U2 - обрабатывает интерфейс к USB-соединению
  • Процессор Atmega328P - это «основной» процессор, на котором есть ваш эскиз
  • Регулятор напряжения - преобразует входную мощность от разъема питания в 5 В
  • Индикатор питания (зеленый) - помечен «Вкл»
  • Светодиодный индикатор (желтый) с маркировкой «L» - подключен через операционный усилитель к цифровому контакту 13
  • Светодиоды Rx и Tx (желтые) - указывают, получает или передает USB-чип (Atmega16U2)

Обратите внимание, что светодиоды Rx и Tx не подключены напрямую к цифровым контактам 0 и 1 на плате (помечены как Rx и Tx). Они загораются, только если вы осуществляете последовательную связь через USB , а не если у вас есть что-то (например, GPS), подключенное непосредственно к цифровым контактам 0 и 1.

Также обратите внимание, что, поскольку светодиод «L» подключен через операционный усилитель, он может загореться, если на выводе 13 установлен вход на вашем эскизе. Это нормально. Это не значит, что что-то ошибочно отправляет данные.


Проверьте мощность

Питание от USB

  • Подключите плату к компьютеру с помощью USB-кабеля и убедитесь, что зеленый светодиод «Вкл» горит.

  • Используйте мультиметр и пару соединительных проводов для проверки между выводом 5 В и выводом GND (показано стрелкой внизу). Вы должны получить около 5,0 В (у меня 5,04 В на моем).

(Вы можете купить дешевый мультиметр примерно за 10 долларов, если у вас его нет, но лучше получить лучший за 50 долларов - проверьте все веб-сайты и магазины электроники.)

  • Также проверьте между контактом 3,3 В и контактом GND - вы должны получить 3,3 В.

Если вы не получаете 5 В при подключенном USB-кабеле, убедитесь, что другой конец подключен к вашему компьютеру. Также попробуйте другой кабель.

Разъем питания

  • Если вы используете или планируете использовать разъем питания (помеченный как «питание» на фотографии), отсоедините USB и подключите источник питания, который должен быть от 7 до 12 В постоянного тока с положительным контактом на центральном контакте.

  • Измерьте выводы 5 В и 3,3 В, как указано выше. Вы должны все еще видеть те же напряжения на них.

Если вы получаете 5 В с подключенным USB, но не с источником питания, то регулятор напряжения (отмеченный на фото), вероятно, поврежден. Или, возможно, произошел сбой источника питания. Попробуйте другой источник питания, чтобы подтвердить, какой это.


Проверьте светодиодную вспышку при включении

Если у вас есть загрузчик Optiboot (с ним обычно поставляется Uno), то если вы нажмете и отпустите кнопку сброса или отсоедините и снова подключите USB или кабель питания, светодиод «L» должен быстро мигнуть 3 раза. Время «включения» и «выключения» составляет 50 мсек каждый, три вспышки должны закончиться в течение примерно 1/3 секунды.

Если это не так, у вас могут быть проблемы с загрузчиком или чипом основного процессора (Atmega328P).


Попробуйте загрузить эскиз

Важно: если у вас возникли проблемы с загрузкой эскизов, удалите все подключенные устройства (например, экраны). Также удалите соединительные провода, вставленные в разъемы платы. В частности, не должно быть ничего подключенного к цифровым контактам 0 и 1 (Rx и Tx), потому что это будет мешать взаимодействию с загружающим компьютером.

Выберите один из простых примеров эскизов (например, Blink) и попробуйте загрузить его. Вот что вы должны увидеть:

  • Светодиод «L» должен мигать 3 раза. Это потому, что основной чип сбрасывается по команде из процесса загрузки.

  • Светодиод «Rx» должен быстро мигать. Это инструкции из процесса загрузки, которые пытаются активировать загрузчик.

  • Светодиод «Tx» должен быстро мигать. Это процессор, подтверждающий загруженные данные.

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

Если мигает только индикатор «Rx», это может быть связано с проблемой загрузчика или чипа основного процессора (Atmega328P). Кто-то стучит, а дома никого нет!

Проверьте тип платы

Если светодиоды мигают, но вы получаете следующее сообщение:

avrdude: stk500_recv(): programmer is not responding

Проверьте тип платы:

Меню типа платы

Если вы выбрали неверный тип доски, он, вероятно, отправит неправильные инструкции по загрузке, и время ожидания истечет, либо произойдет сбой. Если вы похожи на меня и у вас разные доски, легко забыть, что последняя загрузка была для другого типа.

Проверьте коммуникационный порт

Если светодиоды вообще не мигают, возможно, вы выбрали неправильный коммуникационный порт.

Проверьте коммуникационный порт:

Меню порта связи

Попробуйте другой ПК / Mac, если это возможно

Попробуйте свой Arduino на другом ПК / Mac, если он у вас есть. Это может сузить, есть ли у вас проблемы с конкретным компьютером, к которому вы подключили его, или с компьютерами в целом.

Сделать петлевой тест

  • Отключите все экраны и другие провода
  • Уберите доску из питания
  • Подключите перемычку от RESET к GND (оранжевый провод на фото)
  • Подключите перемычку от Rx к Tx (белый провод на фото)

Проводка:

Loopback test

  • Подключите USB-кабель и запустите терминальную программу, например, Terminal Monitor в Arduino IDE. Наберите что-нибудь и отправьте (например, нажмите Enter в Terminal Monitor).
  • Все, что вы печатаете, должно быть возвращено.

Если все возвращается назад: это подтверждает, что у вас есть правильный коммуникационный порт, USB-кабель в порядке, и чип интерфейса USB (Atmega16U2), вероятно, в порядке.

Если ничего не возвращается, проверьте:

  • У вас есть правильный порт связи.
  • Попробуйте другой кабель. Некоторые дешевые USB-кабели имеют только провода питания, а не кабели данных.
  • Проверьте, установлен ли драйвер устройства для Arduino. Вам, вероятно, не нужно делать это, если эта плата ранее работала на этом компьютере, но это может быть целесообразно, если вы впервые подключили эту плату к этому компьютеру.

Тестирование чипа Atmega16U2

Если ваша плата не прошла проверку по шлейфу, и вы уверены, что USB-кабель исправен, вы можете протестировать сам чип Atmega16U2. На плате есть разъем ICSP (In Circuit Serial Programming), рядом с чипом Atmega16U2 и рядом с разъемом USB.

Сначала отключите питание (отсоедините кабель USB и любой кабель питания).

Затем вы можете подключить ICSP-заголовок через 6 перемычек к известному исправному Uno, как показано на фото:

Тестирование чипа Atmega16U2

Распиновка для заголовка ICSP (сверху):

Заголовок ICSP

Вывод 1 на разъеме ICSP рядом с чипом Atmega16U2 отмечен маленькой белой точкой рядом с буквой «F» в «AREF». Вывод 1 на заголовке ICSP рядом с чипом ATmega328P помечен маленькой белой точкой под «N» в «ON».

Подключиться:

Good board         Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

Дважды проверьте вашу проводку.

Затем на плате «заведомо хорошо» установите эскиз «Atmega_Board_Detector», как описано на странице программиста загрузчика Atmega . Код находится на GitHub - nickgammon / arduino_sketches . Если вы нажмете кнопку «Загрузить» на этой странице, вы получите ряд полезных набросков. Тот, который вы хотите, называется "Atmega_Board_Detector".

После установки откройте последовательный монитор, установите его на 115200 бод, и вы должны увидеть что-то вроде этого:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x94 0x89
Processor = ATmega16U2
Flash memory size = 16384 bytes.
LFuse = 0xEF
HFuse = 0xD9
EFuse = 0xF4
Lock byte = 0xCF
Clock calibration = 0x51
Bootloader in use: No
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 4096 bytes starting at 3000

Bootloader:

3000: 0x4B 0xC0 0x00 0x00 0x64 0xC0 0x00 0x00 0x62 0xC0 0x00 0x00 0x60 0xC0 0x00 0x00
3010: 0x5E 0xC0 0x00 0x00 0x5C 0xC0 0x00 0x00 0x5A 0xC0 0x00 0x00 0x58 0xC0 0x00 0x00
3020: 0x56 0xC0 0x00 0x00 0x54 0xC0 0x00 0x00 0x52 0xC0 0x00 0x00 0xEE 0xC4 0x00 0x00
...
3FE0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF
3FF0: 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF 0xFF

MD5 sum of bootloader = 0xD8 0x8C 0x70 0x6D 0xFE 0x1F 0xDC 0x38 0x82 0x1E 0xCE 0xAE 0x23 0xB2 0xE6 0xE7
Bootloader name: Arduino-dfu-usbserial-atmega16u2-Uno-Rev3

First 256 bytes of program memory:

0: 0x90 0xC0 0x00 0x00 0xA9 0xC0 0x00 0x00 0xA7 0xC0 0x00 0x00 0xA5 0xC0 0x00 0x00
10: 0xA3 0xC0 0x00 0x00 0xA1 0xC0 0x00 0x00 0x9F 0xC0 0x00 0x00 0x9D 0xC0 0x00 0x00
20: 0x9B 0xC0 0x00 0x00 0x99 0xC0 0x00 0x00 0x97 0xC0 0x00 0x00 0x48 0xC4 0x00 0x00
30: 0x0C 0xC4 0x00 0x00 0x91 0xC0 0x00 0x00 0x8F 0xC0 0x00 0x00 0x8D 0xC0 0x00 0x00
...

Однако, если вы получите сообщение, подобное этому:

"Failed to enter programming mode. Double-check wiring!"

Это может указывать на то, что ваш ATmega16U2 не работает.


Тестирование чипа ATmega328P

Отключите питание от «известного хорошего» Arduino Uno и переподключите перемычки ICSP согласно этой фотографии, чтобы подключить их к «основному» процессору на Uno:

Тестирование чипа ATmega328P

Распиновка для заголовка ICSP (сверху):

Заголовок ICSP

Вывод 1 на заголовке ICSP рядом с чипом ATmega328P помечен маленькой белой точкой под «N» в «ON».

Проводка такая же, как и раньше, за исключением того, что вы подключаетесь к другому разъему ICSP - тот, что находится на конце платы, наиболее удаленной от разъема USB.

Good board       Target Uno

  MISO                MISO    (pin with dot - pin 1)
  VCC                 VCC
  SCK                 SCK
  MOSI                MOSI
  D10                 /RESET
  GND                 GND

После подключения откройте последовательный монитор, установите его на 115200 бод, и вы должны увидеть что-то вроде этого:

Atmega chip detector.
Written by Nick Gammon.
Version 1.17
Compiled on Jul  9 2015 at 08:36:24 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Bootloader in use: Yes
EEPROM preserved through erase: No
Watchdog timer always on: No
Bootloader is 512 bytes starting at 7E00

Bootloader:

7E00: 0x11 0x24 0x84 0xB7 0x14 0xBE 0x81 0xFF 0xF0 0xD0 0x85 0xE0 0x80 0x93 0x81 0x00
7E10: 0x82 0xE0 0x80 0x93 0xC0 0x00 0x88 0xE1 0x80 0x93 0xC1 0x00 0x86 0xE0 0x80 0x93
...

MD5 sum of bootloader = 0xFB 0xF4 0x9B 0x7B 0x59 0x73 0x7F 0x65 0xE8 0xD0 0xF8 0xA5 0x08 0x12 0xE7 0x9F
Bootloader name: optiboot_atmega328

First 256 bytes of program memory:

0: 0x0C 0x94 0x35 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
10: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
20: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
30: 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00 0x0C 0x94 0x5D 0x00
...

В этом случае он подтверждает, что основной процессор работает, и на нем установлен загрузчик Optiboot.


Вещи, которые вы можете исправить

Неисправный регулятор напряжения

Это не легко заменить, но это необходимо, только если вы используете разъем питания. Если вы запускаете с USB, то это не требуется. В качестве альтернативы вы можете организовать питание от 4 до 5 В (например, 3 батарейки типа АА) и подключить их к разъему 5 В на плате напрямую.


Неудачный чип ATmega16U2

Это требуется только для загрузки эскизов через порт USB и последовательной отладки. Его не так легко заменить, потому что это SMD (устройство поверхностного монтажа). Однако вы можете обойтись без этого.

Вы можете загружать эскизы через заголовок ICSP, если вы приобретаете устройство программирования ICSP.

Примеры таких устройств, подключенных к разъему ICSP:

USBtinyISP

AVRISP

(Эти фотографии были сделаны Ruggeduino, но концепция та же).


Вы также можете получить кабель FTDI, например:

Подключите FTDI к Arduino

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

FTDI кабель

FTDI    Arduino Uno

GND       GND  (black wire on FTDI cable, blue jumper wire)
CTS       not connected
VCC       5V
TxD       D0 (RX)
RxD       D1 (TX)
RTS       To RESET with a 0.1 µF capacitor in series with it (green wire)

Теперь вы можете загружать эскизы прямо в основной процессор, минуя чип USB.


Вы также можете использовать мой автономный программатор Atmega для загрузки файлов .hex - это позволяет вам скопировать файл .hex для эскиза на SD-карту, а затем запрограммировать плату через заголовок ICSP.


Неудачный чип ATmega328P

Основной процессор можно легко заменить, если он установлен в разъем. Получите замену чипа от Adafruit примерно за 6 долларов США. Или попробуйте eBay. Попытайтесь получить чип, на котором уже есть загрузчик Optiboot, чтобы избежать проблем.

Осторожно вытолкните имеющуюся микросхему из гнезда и установите новую, отметив расположение контакта 1. На выводе 1 имеется метка на чипе, и его правильная ориентация отмечена на первой фотографии в этом сообщении желтым цветом. точка (ближайшая к краю доски). Вам, вероятно, нужно будет немного выпрямить ноги. Держите чип за концы и осторожно надавите на плоскую поверхность, например на стол, пока немного не вдавите внутрь. Старайтесь не трогать металлические штыри, вы можете поразить их статическим электричеством.


ATmega328P отвечает, но не имеет загрузчика

У меня есть набросок у программиста загрузчика Atmega, который заменит загрузчик Optiboot. Схема подключения такая же, как для эскиза чип-детектора. Код находится на GitHub - nickgammon / arduino_sketches . Если вы нажмете кнопку «Загрузить» на этой странице, вы получите ряд полезных набросков. Тот, который вы хотите, называется "Atmega_Board_Programmer".

Установите эскиз на своем «известном хорошем» Uno и подключите его к целевой плате с помощью проводки, показанной ранее.

Тестирование чипа ATmega328P

Откройте Serial Monitor на своем «хорошем» Uno, и вы должны увидеть это:

Atmega chip programmer.
Written by Nick Gammon.
Version 1.35
Compiled on Jul  9 2015 at 15:06:58 with Arduino IDE 10604.
Attempting to enter ICSP programming mode ...
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...

Введите «U» для загрузчика Uno (Optiboot).

Using Uno Optiboot 16 MHz loader.
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'Q' to quit, 'V' to verify, or 'G' to program the chip with the bootloader ...

Введите «G» для программирования чипа.

Тебе следует увидеть:

Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xEF
Clock calibration = 0x83
Done.
Programming mode off.
Type 'C' when ready to continue with another chip ...

Это занимает около одной секунды. Теперь загрузчик установлен.


Проблемы со сторожевым таймером

Сторожевой таймер (по умолчанию выключен) можно настроить на сброс процессора через определенное время. Целью является восстановление после зависания процессора, развернутого в полевых условиях. Однако, если таймер установлен на короткий период (например, 16 мс), процессор может сброситься снова, прежде чем загрузчик сможет что-либо сделать.

Симптомы состоят в том, что вы не можете загружать новые эскизы. Некоторые современные загрузчики (например, Optiboot) предпринимают шаги, чтобы остановить эту проблему как одну из первых вещей, которые они делают. Однако другие этого не делают.

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

Там является способом восстановления. Сделайте эти шаги:

  • Полностью выключите плату (отсоедините USB-кабель).
  • Удерживая нажатой кнопку «Сброс», удерживайте ее нажатой (или проложите перемычку от контакта RESET к контакту GND). Это останавливает запуск эскиза проблемы и, таким образом, активирует сторожевой таймер
  • Удерживая нажатой кнопку «Сброс», снова подключите USB-кабель.
  • Начните загружать скетч, у которого нет этой проблемы (например, Blink)
  • Как только среда IDE сообщит «выгрузка», отпустите кнопку сброса (или удалите перемычку).
  • Теперь он должен загрузить OK - поскольку скетч, который активировал сторожевой таймер, никогда не запускался.

Проблемы с загрузкой Mega2560

Я упоминаю об этом здесь, хотя этот пост действительно нацелен на доску Uno, потому что он довольно распространен.

Некоторые версии загрузчика Mega2560 выглядят как "!!!" во входящей загрузке с ПК, и если они это увидят, перейдите в режим отладки. Это приводит к ошибке загрузки.

Пример кода:

Serial.println ("Furnace overheating!!!");

Решения:

  • Установите более свежий загрузчик. Мой эскиз «загрузчик загрузчика», упомянутый ранее в этом ответе, должен установить загрузчик, который не имеет такой проблемы.

Или (проще):

  • Не используй "!!!" в вашем эскизе.

Проблемы с загрузкой в ​​Leonardo / Micro / Esplora и т. Д.

Платы с ATmega32u4 в качестве основного (и единственного) процессора могут быть сложнее загрузить. Это потому, что один и тот же чип должен обрабатывать загрузки, а также запускать ваш код.

После сброса платы появляется небольшое окно возможностей, когда она ищет новый эскиз для загрузки. Техника загрузки на эти доски:

  • Скомпилируйте ваш эскиз без ошибок.
  • Начать загрузку
  • Как только среда IDE сообщает «Загрузка», нажмите и отпустите кнопку «Сброс».

У вас есть только секунда или около того, чтобы сделать это, прежде чем старый эскиз начнет работать. Не расстраивайтесь, если вам придется повторить этот процесс пару раз. Это нормально.


Рекомендации

Ник Гаммон
источник
5
Ух ты. Это отличный ответ
rpax
1
Это прекрасный ответ, сэр.
Мерт Гюльсой
«Если вы получаете 5 В с подключенным USB, но не с источником питания, возможно, поврежден регулятор напряжения (отмечен на фото). Или, возможно, произошел сбой источника питания. Попробуйте другой источник питания, чтобы подтвердить, какой он есть. «. - почему это мешает вам загружать эскизы?
user2813274
Вы совершенно правы, это не так. Однако контрольный список должен был быть общим контрольным списком для сбоев. В этом случае это было бы больше похоже на «Я могу загрузить эскиз, но при развертывании в полевых условиях с источником питания (настенным бородавочником) это не работает».
Ник Гэммон
1
Недавно у меня возникла проблема с новыми драйверами FTDI, которые «кирпичили» китайские «FTDI-совместимые» (можно сказать, имитация) чипы. Они устанавливают PID устройства в 0x0000, что делает драйверы недействительными. Вы можете изменить PID обратно с помощью инструмента M_PROG на FTDI или изменить драйверы (и настроить окна для разрешения непроверенных драйверов).
Пол
14

По крайней мере - поскольку я предполагаю, что вы загружаете свой скетч через avrdude - пожалуйста, дайте больше информации о сбое загрузки (например, выводе загрузчика скетчей), чтобы люди могли помочь вам лучше.

В дополнение к великолепному ответу Ника Гаммона, пожалуйста, ищите восклицательные знаки в вашем эскизе. Если ваш эскиз содержит строку с 3 или более восклицательными знаками, загрузка не будет выполнена, поскольку старые версии загрузчика Arduino будут интерпретировать эти восклицательные знаки как другую функцию, и загрузка будет остановлена.

Пример для остановки загрузки:

char* test = "This will stop the upload!!!";

Смотрите вопрос Google Code .

мегаватт
источник
1
Хорошая точка зрения. Это относится, в основном, к Mega2560, но я признаю, что это опущено :)
Ник Гэммон
1
Добавлен раздел для решения этой проблемы.
Ник Гэммон
2

Я установил 2x ATMega328P на моей плате Arduino Uno из-за статичности (я думаю).

Похоже, что статическое соединение погубило контакт TX, и поэтому программа не может быть загружена с помощью USB-кабеля.

Самое простое решение - заменить микроконтроллер. Вы можете купить новый DIP ATMega328P, запрограммированный с помощью загрузчика Arduino ( такого как этот от Adafruit ), и вы готовы вернуться снова.

Кроме того, вы все равно можете программировать ATMega328P с помощью программатора AVRISPmkII. Когда вы это сделаете, все, кроме контакта Tx, работают нормально.

sa_leinad
источник