При использовании Arduino Uno в качестве интернет-провайдера «Yikes! Недопустимая подпись устройства »означает плохое соединение, плохой конфиг или плохую версию avrdude?


12

Я использую Arduino UNO для программирования предварительно скомпилированного шестнадцатеричного изображения на ATTINY45, используя avrdude в каталоге Arduino IDE, в Windows 7. У Uno есть эскиз ISP, загруженный из каталога примеров, и это работает - индикатор сердцебиения пульс красиво.

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

Вот командные строки, которые я взял, посмотрев выходные данные отладки IDE:

REM set the fuse for 8MHz, so the ISP programmer can work
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -v -v -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0xe2:m 
REM load the program
C:\Progra~1\Arduino\hardware\tools\avr\bin\avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -Uflash:w:firefly.hex:i
REM set fuse for 1MHz, as the project requires
C:\Progra~1\Arduino\hardware/tools/avr/bin/avrdude -CC:\Progra~1\Arduino\hardware/tools/avr/etc/avrdude.conf -v -pattiny45 -cstk500v1 -P\\.\COM7 -b19200 -e -Uefuse:w:0xff:m -Uhfuse:w:0xdf:m -Ulfuse:w:0x62:m 

-Я пытаюсь запустить их отдельно, но всегда получаю эту ошибку:

avrdude: Device signature = 0x000000
avrdude: Yikes!  Invalid device signature.
     Double check connections and try again, or use -F to override
     this check.

но иногда это число ff0000 или ffff00 или ffffff

Я читал, что «Arduino использует слегка модифицированную версию avrdude для загрузки эскизов на плату Arduino. Стандартная версия запрашивает сигнатуру устройства платы способом, не понятным загрузчику, что приводит к этой ошибке». Означает ли это, что использование Arduino avrdude с новым чипом ATTINY, без загрузчика, также вызовет ту же ошибку? Другими словами, способен ли модифицированный avrdude запрашивать не загружаемый Arduino чип AVR?

Или эта ошибка просто означает, что у меня нет хорошего контакта между всеми моими выводами программатора и ATTINY?

И действительно ли нужны настройки предохранителей, может ли Uno запрограммировать флэш-память на частоту 1 МГц и таким образом сэкономить мне несколько шагов?

(Я бы просто купил «настоящего» программиста, но мне нужно получить этот код в ближайшие два дня, и я нахожусь в сельской части Новой Шотландии)


Попробуйте установить программатор на -c avrisp. Я думаю, что вы можете запрограммировать его на 1 МГц без проблем.
user2973

1
Когда я загружаю из Arduino IDE и устанавливаю для программиста «Arduino as ISP», он использует -carduinoне stk500. Просто попробуйте загрузить программу blink в attiny из IDE. Таким образом, вы можете увидеть правильную командную строку внизу, если вы включите «подробный вывод» в настройках.
Гербен

Вы загрузили эскиз ArduinoISP первым?
PhillyNJ

Фил, я загрузил эскиз ArduinoISP в Uno до того, как эти шаги прошли успешно, и я вижу зеленый светодиод «сердцебиение» на контакте 9 импульсов. Gerben / user2973, я попробовал "-carduino", потом попробую "-c avrisp". Спасибо.
Яри

Это похоже на проблему с целевым подключением провайдера <->. Что-нибудь в вашей схеме, которое может загружать линии? Предохранители ATtiny по-прежнему установлены на внутренние часы или вы используете внешние? Вы уверены, что у вас есть все четыре сигнальных провода и заземления, и в правильном порядке? Возможно, вам следует прибегнуть к паяльной настройке, чтобы убедиться, что это не ваш ручной метод (хотя я тоже это использовал)
Крис Страттон,

Ответы:


12

Я припаял провода к контактам, чтобы убедиться, что соединение хорошее, и использовал эти провода для программирования из Uno. Затем программист работал, без каких-либо правок в командной строке, как указано в вопросе. Я запустил несколько вариантов и смог ответить на все мои вопросы, и еще несколько, кроме того:

  1. Ошибка «Yikes! Invalid device signature» была вызвана плохим контактом между программатором (Uno) и выводами ATTINY.

  2. Это не имело ничего общего с отсутствием загрузчика на новом микроконтроллере. Новый чип ATTINY45 не нуждается в загрузчике для работы внутрисхемного программатора.

  3. Uno может программировать ATTINY45, настроенный на любую из его скоростей, 1 МГц или 8 МГц. Заводские настройки в порядке, и не требуют замены предохранителей.

  4. Обе версии avrdude работали для программирования - 6.1 с сайта автора и модифицированная из Arduino IDE.

  5. AVRDUDE программа может через Uno , используя любой из -c avrisp, -c arduinoили -c stk500v1, это не имеет значения , которые.

Один маленький вопрос, на который я не смог ответить, - с какой скоростью работают программы Uno (скорость связи между выводами ввода-вывода Arduino и микроконтроллером мигает). Это связано со скоростью последовательного порта? Но оказалось, что не уместно ответить на эту проблему. Кто-то еще может спросить это, если достаточно любопытно.


2
ArduinoISP устанавливает интерфейс SPI на clock / 128, поэтому для Uno 16 МГц подключенный AVR программируется на 16 МГц / 128 = 125 кбит / с. Но ограничивающими факторами являются последовательная скорость, и когда установлен PROG_FLICKER, для каждой фиксации страницы добавляются 30 мс задержки.
user2973

4

У меня была именно эта проблема. Если ATtiny настроен на внешние часы, то ArduinoISP не сможет запрограммировать его без внешнего кристалла. Подключил 16 МГц кристалл и 2 конденсатора и работал отлично.

(Затем я смог установить ATtiny на внутренние часы, удалить кристалл, а затем работал без кристалла.)


1

Добавьте плату и описание их предохранителей из того, что уже установлено, и оно будет работать.

Для добавления просто C:\Program Files\Arduino\hardware\arduino\avr\boards.txtдобавьте описание доски.

########
############ Definitions for ATmega 8MHz 
##############################################################
atmega16-8.name=Atmega16 (internal 8MHz clock)

atmega16-8.upload.tool=avrdude

atmega16-8.upload.protocol=stk500v1

atmega16-8.upload.maximum_size=14336
atmega16-8.upload.speed=19200

atmega16-8.bootloader.low_fuses=0xE8
atmega16-8.bootloader.high_fuses=0x99

atmega16-8.build.mcu=atmega16
atmega16-8.build.f_cpu=8000000L
atmega16-8.build.core=arduino:arduino
atmega16-8.build.variant=mega16

##############################################################
############################

Я использовал это.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.