Під час використання Arduino Uno як ISP робить "Yikes! Недійсний підпис пристрою »означає поганий зв’язок, неправильну конфігурацію або погану версію avrdude?


12

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

На апаратній стороні у мене є така настройка , за винятком ATTINY на поверхневому кріпленні, припаяний до дошки для серфінгу з усіма її шпильками, перевіреними-спаяними вольтметром. Я використовую смужку заголовка, яку тримають вручну, щоб шпильки торкалися до дошки для серфінгу, щоб передавати сигнали від Uno до УСІЛЬНОСТІ.

Ось командні рядки, які я взяв під час перегляду налагодження виводу 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 не здатна запитувати чіп AVR, не завантажений Arduino?

Або ця помилка просто означає, що я не маю хорошого контакту між усіма своїми шпильками програміста та ОБ'ЄДНАННЯ?

І чи справді потрібні параметри запобіжника, чи може програмування Uno спалах на крихітку, що працює на частоті 1 МГц, і таким чином врятувати мені кілька кроків?

(Я б просто придбав "справжнього" програміста, але мені потрібно отримати цей код у найближчі два дні, і я перебуваю в сільській частині Нової Шотландії)


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

1
Коли я завантажую з ID arduino і встановлюю програміст на "Arduino як ISP", він використовує -carduinoне stk500. Просто спробуйте завантажити програму blink у підручник із IDE. Таким чином ви зможете побачити правильний командний рядок внизу, якщо ввімкнути "багатослівний вихід" у налаштуваннях.
Гербен

Ви спочатку завантажили ескіз ArduinoISP?
PhillyNJ

Філ, я завантажив ескіз ArduinoISP в Uno перед цими кроками, це вдалося, і я бачу зелений світлодіод "серцебиття" в контакт 9 імпульсу. Gerben / user2973, я спробував "-carduino", я спробую "-c avrisp" далі. Дякую.
Ярі

Це виглядає як проблема з цільовим підключенням провайдера <->. Щось у вашій схемі, що могло б завантажувати лінії? Ви все ще встановлені запобіжниками ATtiny для внутрішнього годинника, або ви надаєте зовнішній? Ви впевнені, що всі чотири сигнальні дроти та заземлення підключені та в правильному порядку? Можливо, вам слід скористатися налаштуванням пайки лише для того, щоб переконатися, що це не ваш ручний метод (хоча я також це використовував)
Chris Stratton

Відповіді:


12

Я припаяв дроти до колодок, щоб переконатися, що зв’язок хороший, і використовував ці дроти для програмування від Uno. Тоді програміст працював, не редагуючи командні рядки, як розміщено у запитанні. Я провів кілька варіацій і зміг відповісти на всі мої запитання, а ще кілька:

  1. Помилка "Yikes! Invalid device signature" спричинена поганим контактом між програмістом (Uno) та штифтами ATTINY.

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

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

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

  5. AVRDUDE програма може через Uno , використовуючи будь-який з -c avrisp, -c arduinoабо -c stk500v1, це не має значення , які.

Одне невелике запитання, на яке я не змогла відповісти, - це швидкість роботи програм Uno (швидкість зв’язку між блискавками вводу / виводу Arduino та мікроконтролером). Це пов'язано зі швидкістю послідовного порту? Але, як виявилося, відповідати на цю проблему не доречно. Хтось ще може запитати, чи достатньо цікавий.


2
ArduinoISP встановлює інтерфейс SPI на тактовий / 128, тому для 16 МГц Uno підключений 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.