Что означает avrdude: Device signature = 0x000000? Неисправная проводка? Проблема с программным обеспечением? Неправильная инструкция?

Я следовал этому уроку пару раз, и когда я нажал на загрузчик, я получил эту ошибку:

avrdude: Device signature = 0x000000

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

  1. Почему я получаю эту ошибку (Arduino не может общаться с чипом, проблема с программным обеспечением)?
  2. Как я могу это исправить?
  3. Что-то в учебнике неправильно?

Имейте в виду, что я использую Arduino Uno Rev. 3 и ATmega328P

, 👍1


4 ответа


Лучший ответ:

4

Есть одна часть учебника, которая неверна - или, скорее, отсутствует.

Когда вы открываете последовательный порт, Arduino сбрасывается. Это включает в себя, когда последовательный порт открывается avrdude.

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

Есть несколько способов сделать это:

  • Добавьте конденсатор 10 мкФ или больше между СБРОСОМ и GND на Arduino
  • Добавьте небольшой (скажем, 100R) резистор между сбросом и 5 В на Arduino
  • Вырежьте трассировку RESET-EN на нижней стороне Arduino

Из них мой предпочтительный метод - первый: добавьте конденсатор 10 мкФ или больше между сбросом и GND на Arduino.


Обновление:

Теперь, когда вы предоставили фотографии вашей фактической установки, я вижу, что провод заземления между вашим Arduino и макетной платой фактически подключен к контакту VIN Arduino, а не GND.

,

У него уже есть резистор 10k между 5V и контактом 1 (на чипе)., @manarinian

Ну и что? Это не имеет абсолютно ничего общего с выводом СБРОСА Arduino., @Majenko

ОК! Спасибо, я попробую еще раз с резистором/конденсатором!, @manarinian

Я все еще получаю ту же ошибку: avrdude: Сигнатура устройства = 0xffffff (вероятно .avr8x_mega) аврдуде: Фу! Неверная сигнатура устройства. Дважды проверьте соединения и повторите попытку или используйте -F для переопределения этот чек., @manarinian

И вы подключили конденсатор к штифту СБРОСА Arduino, не так ли? Не тот ли сигнал, который идет на вывод СБРОСА вашей целевой ATmega?, @Majenko

Я поместил электролитический конденсатор 10 мкф (16 В) между выводом сброса Arduino и выводом GND Arduino. Я пришлю вам пару фотографий., @manarinian

Тогда вы, возможно, что-то неправильно подключили., @Majenko

Вот ссылки на фотографии: https://photos.app.goo.gl/N5NBcmSgFeBrE6Dr7, https://photos.app.goo.gl/wKcDfGXizjdPJspw8. Это то, что я должен делать, верно?, @manarinian

У вас провод GND подключен к VIN, а не к GND., @Majenko

Да. Я видел это. Теперь я подключил его к GND, и это сработало! Большое спасибо!, @manarinian


2

К сожалению, три важные темы на форуме Arduino по этой теме закрыты, поэтому их полезная, но неполная информация запекается вовремя:

  • Ошибка неверной подписи устройства
    • Какие ссылки: Правильно ли я понял эти инструкции ArduinoISP?
  • Недопустимая подпись устройства = 0x000000
  • нет часов на Atmega328p-AU

Итак, позвольте мне добавить еще немного полезной информации в надежде, что она проникнет.

Подпись устройства = 0x000000

Означает, что MCU не ответил подписью. Вероятность этого очень мала, потому что при запросе подписи он сообщил все нули, но гораздо выше вероятность того, что он вообще не ответил. Правильные байты подписи находятся здесь (например, ATmega328P = 0x1E950F) и, что особенно важно, он есть у всех микроконтроллеров Atmel.

Далее ошибка:

avrdude: Подпись устройства = 0x000000

avrdude: Ого! Недопустимая подпись устройства.

возникнет, если вы используете ArduinoISP для прошивки целевого Arduino, а цель физически не подключена. Так что это действительно «все ставки сняты». сообщение, которое не указывает на какую-либо конкретную причину. Чтобы устранить неполадки, проверьте проводку, если это хороший первый шаг.

С другой стороны, не беспокойтесь о внешнем тактовом сигнале. В отличие от некоторых руководств, ATmega328P, по крайней мере, поставляется с заводской конфигурацией для использования внутреннего RC-генератора, поэтому даже правильно подключенный кварц или резонатор на контактах XTAL не будет проявлять никакой активности до первой успешной вспышки.

,

-1

Одна из причин получения странной подписи устройства, например 0x000000/0x0000ff/0xff0000. у него неправильные кварцевые часы.

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

Я использовал китайскую плату-клон Atmega328PU и не смог загрузить скетч. Затем я попытался загрузить скетч с помощью платы miniCore (где по умолчанию была выбрана внешняя тактовая частота 16 МГц). Те же проблемы с подписью.

По какой-то причине я попробовал загрузить с частотой 8 МГц, и на этот раз подпись устройства была правильной

т.е. подпись устройства = 0x1e950f (вероятно, m328p)

и смог успешно загрузить скетч.

Настоятельно рекомендую попробовать.

,

0

Могу подтвердить предыдущий ответ об изменении частоты SPI. Я отредактировал пример ArduinoISP.ino и изменил #define SPI_CLOCK (1000000/6) на #define SPI_CLOCK (128000/6), после чего я успешно записал загрузчик в свой UNO< /п>

,

Ответ дублирует другие ответы., @VE7JRO