Arduino Uno'yu ISS olarak kullanırken “Yikes! Geçersiz cihaz imzası ”kötü bir bağlantı, kötü yapılandırma veya kötü sürüm mü demek?


12

Windows 7'de Arduino IDE dizinindeki avrdude kullanarak önceden derlenmiş onaltılık bir görüntüyü bir ATTINY45'e programlamak için Arduino UNO kullanıyorum. güzel bakliyat.

Donanım tarafında , ATTINY yüzeye monte, tüm pimleri bir voltmetre ile doğrulanmış lehimlenmiş bir sörf tahtasına lehimlenmesi dışında bu kurulum var . Uno'dan ATTINY'ye sinyalleri almak için pimleri sörf tahtasına dokunmak için elle tutulan bir başlık pimi şeridi kullanıyorum.

İşte IDE'nin hata ayıklama çıktısına bakarak aldığım komut satırları:

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 

-Bunları ayrı çalıştırmayı deniyorum, ama her zaman bu hatayı alıyorum:

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

ancak bazen sayı ff0000 veya ffff00 veya ffffff

"Arduino, çizimleri Arduino panosuna yüklemek için hafifçe değiştirilmiş bir avrdude sürümü kullanıyor. Standart sürüm, panonun cihaz imzasını önyükleyici tarafından anlaşılmayan bir şekilde sorgular ve bu hatayla sonuçlanır." Bu, Arduino avrdude'unu yeni bir ATTINY yongasıyla, üzerinde herhangi bir önyükleyici kullanmanın da aynı hataya neden olacağı anlamına mı geliyor? Başka bir deyişle, değiştirilmiş ortalama, Arduino tarafından önyüklenmemiş bir AVR yongasını sorgulayamıyor mu?

Yoksa bu hata tüm programcı pinlerimle ATTINY arasında iyi bir temasım olmadığı anlamına mı geliyor?

Sigorta ayarlarına gerçekten ihtiyaç duyuluyor mu, Uno flaşı 1MHz'de çalışan bir fırına programlayabilir ve böylece bana bazı adımlar kazandırabilir mi?

(Sadece "gerçek" bir programcı satın alırdım, ancak önümüzdeki iki gün içinde bu kodu almam gerekiyor ve Nova Scotia'nın kırsal bir kesimindeyim)


Programlayıcıyı olarak ayarlamayı deneyin -c avrisp. Sanırım 1 MHz'de sorunsuz programlayabilirsiniz.
user2973

1
Arduino IDE'den yüklediğimde ve programcıyı "ISP olarak Arduino" olarak -carduinoayarladığımda stk500 değil. Yanıp sönme programını IDE'den dikkatinize yüklemeyi deneyin. Bu şekilde, ayarlarda "ayrıntılı çıktı" yı etkinleştirirseniz, alt kısımda doğru komut satırını görebilirsiniz.
Gerben

Önce ArduinoISP çizimini yüklediniz mi?
PhillyNJ

Phil, bu adımlardan önce ArnoinoISP çizimini Uno'ya yükledim, başarılı oldu ve 9 numaralı palsda yeşil "kalp atışı" LED'ini görüyorum. Gerben / user2973, "-carduino" yu denedim, "-c avrisp" i deneyeceğim. Teşekkürler.
Yary

Bu, bir ISS <-> hedef bağlantı sorunu gibi görünüyor. Devrenizde hatları yükleyebilecek herhangi bir şey var mı? ATtiny sigortaları hala dahili saat için ayarlanmış mı yoksa harici bir sigorta mı sağlıyorsunuz? Dört sinyal kablosunun ve toprağın bağlı olduğundan ve doğru sırada olduğundan emin misiniz? Belki de sadece elle tutulan yöntem olmadığını doğrulamak için bir ayarı lehimlemelisiniz (bunu da kullandım da)
Chris Stratton

Yanıtlar:


12

Bağlantının iyi olduğundan emin olmak için kabloları pedlere lehimledim ve bu kabloları Uno'dan programlama için kullandım. Daha sonra programcı, soruda belirtildiği gibi komut satırlarında herhangi bir düzenleme yapmadan çalıştı. Birkaç varyasyon çalıştırdım ve tüm sorularıma ve birkaç soruya daha cevap verebildim:

  1. "Yikes! Geçersiz aygıt imzası" hatası, programcı (Uno) ve ATTINY pinleri arasındaki zayıf temastan kaynaklanıyordu.

  2. Önyükleyicinin yeni mikro denetleyicide olmamasıyla hiçbir ilgisi yoktu. Yeni ATTINY45 yongası, devre içi programlayıcının çalışması için bir önyükleyiciye ihtiyaç duymaz.

  3. Uno, yapılandırılan ATTINY45'i hızlarından biri olan 1MHz veya 8MHz'e programlayabilir. Fabrika ayarları gayet iyi ve sigortaların değiştirilmesini gerektirmiyor.

  4. Hem avrdude versiyonları yazarın sitesinden 6.1 olan programlama çalıştı ve Arduino IDE modifiye bir.

  5. avrdude herhangi birini kullanarak Uno yoluyla kutu programı -c avrisp, -c arduinoya -c stk500v1, meselenin hangi yapmaz.

Cevaplayamadığım küçük bir soru, Uno programlarının hangi hızda olduğuydı (Arduino I / O pinleri ve mikrodenetleyici arasındaki iletişim hızı yanıp sönüyordu). Seri port hızıyla ilgili mi? Ancak bu sorunun yanıtlanmasıyla ilgili olmadığı ortaya çıktı. Başka biri yeterince merak edip etmediğini sorabilir.


2
ArduinoISP SPI arayüzünü saat / 128 olarak ayarlar, bu nedenle 16 MHz Uno için bağlı AVR 16 MHz / 128 = 125 kbit / s'de programlanır. Ancak sınırlayıcı faktörler seri hızdır ve PROG_FLICKER ayarlandığında, her sayfa yürütmesi için 30 ms gecikme eklenir.
user2973

4

Tam olarak bu problemi yaşadım . ATtiny harici saat için ayarlanmışsa, ArduinoISP harici bir kristal olmadan onu programlayamaz. 16 MHz kristal ve 2 kapasitör bağlandı ve mükemmel çalıştı.

(Daha sonra ATtiny'yi iç saate ayarlayabilir, kristali çıkarabilir ve sonra kristal olmadan mükemmel çalışabilirim.)


1

Kurulu ve sigorta açıklamasını önceden ayarlanmış olanlardan ekleyin ve çalışacaktır.

Sadece C:\Program Files\Arduino\hardware\arduino\avr\boards.txteklemek ve tahta açıklamasını eklemek için.

########
############ 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

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

Onu kullandım.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.