Я не могу загрузить эскизы на Arduino Uno.
- Я "заложил" это?
- Какие шаги я могу предпринять, чтобы понять, что не так?
- Что я могу сделать, чтобы это исправить?
arduino-uno
uploading
atmega328
icsp
Ник Гаммон
источник
источник
Ответы:
Это, вероятно, не заложено
У меня есть довольно много Arduinos, и за последние несколько лет только когда-либо "кирпичную" одну, и я думаю, что это было от удара электрическим током. К сожалению, этот конкретный чип имел поверхностный SMD-процессор, поэтому попробовать заменить его другим чипом нелегко.
Сохраняйте спокойствие и попробуйте следующие шаги ...
Пример платы
«Arduino Uno» - это не единственная вещь, которая может потерпеть неудачу. Он имеет несколько основных компонентов, и, возможно, только один из них вышел из строя (если есть). Смотрите эту справочную фотографию:
Основные компоненты:
Обратите внимание, что светодиоды Rx и Tx не подключены напрямую к цифровым контактам 0 и 1 на плате (помечены как Rx и Tx). Они загораются, только если вы осуществляете последовательную связь через USB , а не если у вас есть что-то (например, GPS), подключенное непосредственно к цифровым контактам 0 и 1.
Также обратите внимание, что, поскольку светодиод «L» подключен через операционный усилитель, он может загореться, если на выводе 13 установлен вход на вашем эскизе. Это нормально. Это не значит, что что-то ошибочно отправляет данные.
Проверьте мощность
Питание от USB
Подключите плату к компьютеру с помощью USB-кабеля и убедитесь, что зеленый светодиод «Вкл» горит.
Используйте мультиметр и пару соединительных проводов для проверки между выводом 5 В и выводом GND (показано стрелкой внизу). Вы должны получить около 5,0 В (у меня 5,04 В на моем).
(Вы можете купить дешевый мультиметр примерно за 10 долларов, если у вас его нет, но лучше получить лучший за 50 долларов - проверьте все веб-сайты и магазины электроники.)
Если вы не получаете 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). Кто-то стучит, а дома никого нет!
Проверьте тип платы
Если светодиоды мигают, но вы получаете следующее сообщение:
Проверьте тип платы:
Если вы выбрали неверный тип доски, он, вероятно, отправит неправильные инструкции по загрузке, и время ожидания истечет, либо произойдет сбой. Если вы похожи на меня и у вас разные доски, легко забыть, что последняя загрузка была для другого типа.
Проверьте коммуникационный порт
Если светодиоды вообще не мигают, возможно, вы выбрали неправильный коммуникационный порт.
Проверьте коммуникационный порт:
Попробуйте другой ПК / Mac, если это возможно
Попробуйте свой Arduino на другом ПК / Mac, если он у вас есть. Это может сузить, есть ли у вас проблемы с конкретным компьютером, к которому вы подключили его, или с компьютерами в целом.
Сделать петлевой тест
Проводка:
Если все возвращается назад: это подтверждает, что у вас есть правильный коммуникационный порт, USB-кабель в порядке, и чип интерфейса USB (Atmega16U2), вероятно, в порядке.
Если ничего не возвращается, проверьте:
Тестирование чипа Atmega16U2
Если ваша плата не прошла проверку по шлейфу, и вы уверены, что USB-кабель исправен, вы можете протестировать сам чип Atmega16U2. На плате есть разъем ICSP (In Circuit Serial Programming), рядом с чипом Atmega16U2 и рядом с разъемом USB.
Сначала отключите питание (отсоедините кабель USB и любой кабель питания).
Затем вы можете подключить ICSP-заголовок через 6 перемычек к известному исправному Uno, как показано на фото:
Распиновка для заголовка ICSP (сверху):
Вывод 1 на разъеме ICSP рядом с чипом Atmega16U2 отмечен маленькой белой точкой рядом с буквой «F» в «AREF». Вывод 1 на заголовке ICSP рядом с чипом ATmega328P помечен маленькой белой точкой под «N» в «ON».
Подключиться:
Дважды проверьте вашу проводку.
Затем на плате «заведомо хорошо» установите эскиз «Atmega_Board_Detector», как описано на странице программиста загрузчика Atmega . Код находится на GitHub - nickgammon / arduino_sketches . Если вы нажмете кнопку «Загрузить» на этой странице, вы получите ряд полезных набросков. Тот, который вы хотите, называется "Atmega_Board_Detector".
После установки откройте последовательный монитор, установите его на 115200 бод, и вы должны увидеть что-то вроде этого:
Однако, если вы получите сообщение, подобное этому:
Это может указывать на то, что ваш ATmega16U2 не работает.
Тестирование чипа ATmega328P
Отключите питание от «известного хорошего» Arduino Uno и переподключите перемычки ICSP согласно этой фотографии, чтобы подключить их к «основному» процессору на Uno:
Распиновка для заголовка ICSP (сверху):
Вывод 1 на заголовке ICSP рядом с чипом ATmega328P помечен маленькой белой точкой под «N» в «ON».
Проводка такая же, как и раньше, за исключением того, что вы подключаетесь к другому разъему ICSP - тот, что находится на конце платы, наиболее удаленной от разъема USB.
После подключения откройте последовательный монитор, установите его на 115200 бод, и вы должны увидеть что-то вроде этого:
В этом случае он подтверждает, что основной процессор работает, и на нем установлен загрузчик Optiboot.
Вещи, которые вы можете исправить
Неисправный регулятор напряжения
Это не легко заменить, но это необходимо, только если вы используете разъем питания. Если вы запускаете с USB, то это не требуется. В качестве альтернативы вы можете организовать питание от 4 до 5 В (например, 3 батарейки типа АА) и подключить их к разъему 5 В на плате напрямую.
Неудачный чип ATmega16U2
Это требуется только для загрузки эскизов через порт USB и последовательной отладки. Его не так легко заменить, потому что это SMD (устройство поверхностного монтажа). Однако вы можете обойтись без этого.
Вы можете загружать эскизы через заголовок ICSP, если вы приобретаете устройство программирования ICSP.
Примеры таких устройств, подключенных к разъему ICSP:
(Эти фотографии были сделаны Ruggeduino, но концепция та же).
Вы также можете получить кабель FTDI, например:
Подключите его к последовательным портам вашей платы следующим образом:
Теперь вы можете загружать эскизы прямо в основной процессор, минуя чип USB.
Вы также можете использовать мой автономный программатор Atmega для загрузки файлов .hex - это позволяет вам скопировать файл .hex для эскиза на SD-карту, а затем запрограммировать плату через заголовок ICSP.
Неудачный чип ATmega328P
Основной процессор можно легко заменить, если он установлен в разъем. Получите замену чипа от Adafruit примерно за 6 долларов США. Или попробуйте eBay. Попытайтесь получить чип, на котором уже есть загрузчик Optiboot, чтобы избежать проблем.
Осторожно вытолкните имеющуюся микросхему из гнезда и установите новую, отметив расположение контакта 1. На выводе 1 имеется метка на чипе, и его правильная ориентация отмечена на первой фотографии в этом сообщении желтым цветом. точка (ближайшая к краю доски). Вам, вероятно, нужно будет немного выпрямить ноги. Держите чип за концы и осторожно надавите на плоскую поверхность, например на стол, пока немного не вдавите внутрь. Старайтесь не трогать металлические штыри, вы можете поразить их статическим электричеством.
ATmega328P отвечает, но не имеет загрузчика
У меня есть набросок у программиста загрузчика Atmega, который заменит загрузчик Optiboot. Схема подключения такая же, как для эскиза чип-детектора. Код находится на GitHub - nickgammon / arduino_sketches . Если вы нажмете кнопку «Загрузить» на этой странице, вы получите ряд полезных набросков. Тот, который вы хотите, называется "Atmega_Board_Programmer".
Установите эскиз на своем «известном хорошем» Uno и подключите его к целевой плате с помощью проводки, показанной ранее.
Откройте Serial Monitor на своем «хорошем» Uno, и вы должны увидеть это:
Введите «U» для загрузчика Uno (Optiboot).
Введите «G» для программирования чипа.
Тебе следует увидеть:
Это занимает около одной секунды. Теперь загрузчик установлен.
Проблемы со сторожевым таймером
Сторожевой таймер (по умолчанию выключен) можно настроить на сброс процессора через определенное время. Целью является восстановление после зависания процессора, развернутого в полевых условиях. Однако, если таймер установлен на короткий период (например, 16 мс), процессор может сброситься снова, прежде чем загрузчик сможет что-либо сделать.
Симптомы состоят в том, что вы не можете загружать новые эскизы. Некоторые современные загрузчики (например, Optiboot) предпринимают шаги, чтобы остановить эту проблему как одну из первых вещей, которые они делают. Однако другие этого не делают.
Это может быть трудно исправить, поскольку после запуска эскиза у вас возникает проблема его сброса, и если у вас есть проблема, вы не можете заменить эскиз. Люди часто сообщают, что для восстановления необходимо записать новый загрузчик. Однако это только потому, что, как побочный эффект, запись загрузчика стирает текущий эскиз.
Там является способом восстановления. Сделайте эти шаги:
Проблемы с загрузкой Mega2560
Я упоминаю об этом здесь, хотя этот пост действительно нацелен на доску Uno, потому что он довольно распространен.
Некоторые версии загрузчика Mega2560 выглядят как "!!!" во входящей загрузке с ПК, и если они это увидят, перейдите в режим отладки. Это приводит к ошибке загрузки.
Пример кода:
Решения:
Или (проще):
Проблемы с загрузкой в Leonardo / Micro / Esplora и т. Д.
Платы с ATmega32u4 в качестве основного (и единственного) процессора могут быть сложнее загрузить. Это потому, что один и тот же чип должен обрабатывать загрузки, а также запускать ваш код.
После сброса платы появляется небольшое окно возможностей, когда она ищет новый эскиз для загрузки. Техника загрузки на эти доски:
У вас есть только секунда или около того, чтобы сделать это, прежде чем старый эскиз начнет работать. Не расстраивайтесь, если вам придется повторить этот процесс пару раз. Это нормально.
Рекомендации
источник
По крайней мере - поскольку я предполагаю, что вы загружаете свой скетч через avrdude - пожалуйста, дайте больше информации о сбое загрузки (например, выводе загрузчика скетчей), чтобы люди могли помочь вам лучше.
В дополнение к великолепному ответу Ника Гаммона, пожалуйста, ищите восклицательные знаки в вашем эскизе. Если ваш эскиз содержит строку с 3 или более восклицательными знаками, загрузка не будет выполнена, поскольку старые версии загрузчика Arduino будут интерпретировать эти восклицательные знаки как другую функцию, и загрузка будет остановлена.
Пример для остановки загрузки:
Смотрите вопрос Google Code .
источник
Я установил 2x ATMega328P на моей плате Arduino Uno из-за статичности (я думаю).
Похоже, что статическое соединение погубило контакт TX, и поэтому программа не может быть загружена с помощью USB-кабеля.
Самое простое решение - заменить микроконтроллер. Вы можете купить новый DIP ATMega328P, запрограммированный с помощью загрузчика Arduino ( такого как этот от Adafruit ), и вы готовы вернуться снова.
Кроме того, вы все равно можете программировать ATMega328P с помощью программатора AVRISPmkII. Когда вы это сделаете, все, кроме контакта Tx, работают нормально.
источник