Проблема с программированием ATtiny85: Error - avrdude: Yikes! Invalid device signature
Я пытаюсь запрограммировать чип Attiny85, используя Arduino Uno в качестве ISP, следуя этим двум руководствам: Инструкции: Программирование ATtiny с помощью Arduino и Программирование ATtiny с помощью Arduino 1.6 (или 1.0), но каждый раз, когда я пытаюсь загрузить скетч, я получаю это сообщение об ошибке:
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
Я пробовал разные платы Arduino/изменение порта и разные чипы ATtiny, но все результаты были одинаковыми. Я также несколько раз проверял проводку, и она кажется правильной.
Это полное сообщение об ошибке (в подробном режиме):
avrdude: Version 6.0.1, compiled on Apr 15 2015 at 19:59:58
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
Copyright (c) 2007-2009 Joerg Wunsch
System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"
Using Port : COM7
Using Programmer : stk500v1
Overriding Baud Rate : 19200
AVR Part : ATtiny85
Chip Erase delay : 400000 us
PAGEL : P00
BS2 : P00
RESET disposition : possible i/o
RETRY pulse : SCK
serial program mode : yes
parallel program mode : yes
Timeout : 200
StabDelay : 100
CmdexeDelay : 25
SyncLoops : 32
ByteDelay : 0
PollIndex : 3
PollValue : 0x53
Memory Detail :
Block Poll Page Polled
Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
eeprom 65 12 4 0 no 512 4 0 4000 4500 0xff 0xff
flash 65 6 32 0 yes 8192 64 128 30000 30000 0xff 0xff
signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
lock 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 9000 0x00 0x00
calibration 0 0 0 0 no 2 0 0 0 0 0x00 0x00
Programmer Type : STK500
Description : Atmel STK500 Version 1.x firmware
Hardware Version: 2
Firmware Version: 1.18
Topcard : Unknown
Vtarget : 0.0 V
Varef : 0.0 V
Oscillator : Off
SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0x000000 (retrying)
Reading | ################################################## | 100% 0.05s
avrdude: Device signature = 0x000000
avrdude: Yikes! Invalid device signature.
Double check connections and try again, or use -F to override
this check.
avrdude done. Thank you.
@Voly, 👍1
Обсуждение2 ответа
Попробуйте подключить контакт RESET Attiny85 к GND за секунду до того, как вы нажмете «программировать».
По моему опыту, Arduino не всегда отправляет сигнал RESET, когда должен (или на выводе, который, по вашему мнению, будет отправлен).
В этих случаях ручной сброс Attiny путем подключения контакта RESET к земле делает его программируемым.
Вы можете поддерживать низкий уровень RESET в течение всего процесса программирования, но если вы будете поддерживать низкий уровень в течение многих минут перед программированием микросхемы, это может не всегда работать. В таких случаях установите RESET на некоторое время в высокий уровень, а затем снова установите его в низкий уровень, и Attiny должен быть пригоден для следующего раунда программирования.
И, конечно же, если вы хотите, чтобы Attiny начал делать то, на что вы его запрограммировали, вам нужно снова установить высокий уровень RESET.
Я попробовал это и получил: avrdude: stk500_recv(): программист не отвечает какие-либо предложения?, @Voly
Добавили ли вы конденсатор или подтягивающий резистор, чтобы предотвратить самоперезагрузку Arduino при попытке перезагрузки Attiny?, @Dampmaskin
Да, есть, 10 мкФ подключено между GND и RES., @Voly
Единственная повторяющаяся проблема, с которой я столкнулся, не дала мне выполнить двойную и тройную проверку... * соединений, * и не забыть загрузить скетч «Arduino as ISP» в Arduino, * и выбрать плату, * порт, и * «ArduinoISP» в Arduino IDE... приходилось выполнять сброс вручную. Если ничего из этого не помогло, то мне жаль признавать, что у меня закончились идеи. Однако я несколько раз обманывался, забывая переключить программатор между AVRISP mkII и ArduinoISP в нужное время., @Dampmaskin
@Voly: Вы пытаетесь запрограммировать Attiny в схеме? Другими словами, есть ли другие компоненты, подключенные к контактам Attiny, или это только Arduino Uno?, @Dampmaskin
@Voly, еще один вопрос: вы «сожгли загрузчик» на Attiny85? На самом деле это не сжигает загрузчик, но устанавливает предохранители. Эта операция успешна или тоже не удалась?, @Dampmaskin
Эта ошибка (в частности, 0x000000
) обычно, но не всегда, означает, что в ATtiny установлены фьюзы на внешнее колебание, но нет работающего генератора :
avrdude: Device signature = 0x000000
Возможно, вам потребуется добавить внешний генератор, то есть кварцевый резонатор 16 МГц, и пару керамических конденсаторов емкостью 22 пФ:
Однако, как показывает этот калькулятор предохранителей Engbedded Atmel AVR®, существует ряд вариантов, которые можно задать:
Поэтому вместо кристалла вам может понадобиться внешний тактовый генератор:
Эти схемы взяты с сайта Что такое схема? делить один кристалл с двумя микро?
- Программирование сервопривода на ATtiny85
- Связь I2C между Attiny85 в качестве ведущего устройства и Arduino UNO в качестве ведомого устройства
- Использование ATiny102 в качестве HID-устройства (эмуляция мыши)
- Как настроить ATTiny861A-PU для прошивки с помощью Arduino Uno?
- Возникли проблемы с определением CTC на таймере 1 с помощью ATTiny85.
- adc arduino использует опорное напряжение для считывания стабильного/постоянного напряжения литиевой батареи
- Чтение постоянного напряжения батареи и использование полученного значения в формуле датчика
- Использование внутреннего опорного напряжения для датчика
Проголосовали против, потому что вы перестали отвечать на вопросы человека, пытающегося вам помочь, что сделало невозможным ответ на этот вопрос., @per1234
Подсказка: начните с проверки «Arduino Uno в качестве интернет-провайдера». Этот вопрос предполагает, что интернет-провайдер работает правильно., @Mikael Patel
@MikaelPatel - я обнаружил, что если поставщик услуг Интернета установлен неправильно, то ошибка не «Ура!», а либо «Не удалось найти ошибку устройства USBtiny», либо «avrdude: stk500_recv(): программатор не отвечает»., @Greenonline