ISPとしてArduino Unoを使用すると、「いいね!無効なデバイス署名」は、接続、構成、またはavrdudeのバージョンが正しくないことを意味しますか?


12

私はArduino UNOを使用して、Windows 7でArduino IDEディレクトリのavrdudeを使用して、コンパイル済みの16進イメージをATTINY45にプログラムしています。Unoには、examplesディレクトリから読み込まれたISPスケッチがあり、動作します-ハートビートLEDうまくパルスします。

ハードウェア側では、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ボードにアップロードします。標準バージョンは、ブートローダーが理解できない方法でボードのデバイス署名を照会し、このエラーが発生します。」これは、ブートローダーが搭載されていない新しいATTINYチップでArduino avrdudeを使用しても、同じエラーが発生することを意味しますか?言い換えれば、変更されたavrdudeは非ArduinoブートロードAVRチップをクエリできないのですか?

それとも、このエラーは、すべてのプログラマピンとATTINYの間に適切な接触がないことを単に意味しているのですか?

そして、ヒューズの設定は本当に必要ですか?Unoはフラッシュを1MHzで動作するattinyにプログラムできるので、いくつかの手順を節約できますか?

(私は「本物の」プログラマーを購入するだけですが、次の2日間でこのコードを入手する必要があり、ノバスコシア州の田舎にいます)


プログラマーをに設定してみてください-c avrisp。1 MHzで問題なくプログラムできると思います。
user2973

1
Arduino IDEからアップロードしてプログラマーを「Arduino as ISP」に設定すると-carduino、stk500 ではなく使用されます。IDEからブライトプログラムをattinyにアップロードしてみてください。こうすることで、設定で「詳細出力」を有効にすると、下部に正しいコマンドラインが表示されます。
Gerben 2014

最初にArduinoISPスケッチをアップロードしましたか?
PhillyNJ 2014

フィル、私はこれらの手順の前にArduinoISPスケッチをUnoにロードしましたが、成功し、ピン9のパルスに緑色の「ハートビート」LEDが表示されています。Gerben / user2973、私は「-carduino」を試しましたが、次に「-c avrisp」を試します。ありがとう。
Yary、2014

これは、ISP <->ターゲット接続の問題のようです。回線に負荷をかけている可能性のある回路に何かありますか?ATtinyヒューズはまだ内部クロック用に設定されていますか、それとも外部ヒューズを提供していますか?4本の信号線とアースがすべて正しい順序で接続されていますか?おそらく、手持ちの方法ではないことを確認するためだけにセットアップをはんだ付けする必要があります(私もそれを使用しました)
Chris Stratton

回答:


12

接続を確実にするためにワイヤーをパッドにはんだ付けし、それらのワイヤーをUnoからのプログラミングに使用しました。その後、プログラマーは、質問に投稿されているコマンドラインを編集せずに作業しました。私はいくつかのバリエーションを実行し、すべての私の質問に答えることができました。

  1. 「Yikes!Invalid device signature」エラーは、プログラマー(Uno)とATTINYピンの間の接触不良が原因で発生していました。

  2. ブートローダーが新しいマイクロコントローラー上にないこととは何の関係もありませんでした。新しいATTINY45チップは、インサーキットプログラマが機能するためのブートローダーを必要としません。

  3. Unoは、1MHzまたは8MHzのいずれかの速度に設定されたATTINY45をプログラムできます。工場出荷時の設定は問題なく、ヒューズを交換する必要はありません。

  4. 両方のavrdudeバージョンがプログラミングに機能しました。著者のサイトの6.1と、Arduino IDEの修正バージョンです。

  5. avrdude、、、またはのいずれかを使用してUno経由でプログラムできますが-c avrisp、どちらでもかまいません。-c arduino-c stk500v1

私が答えることができなかった小さな質問の1つは、Unoプログラムの速度(Arduino I / Oピンとフラッシュされるマイクロコントローラー間の通信速度)でした。シリアルポートの速度に関係がありますか?しかし、この問題に答えるのは適切ではないことがわかりました。他の誰かが十分に興味があればそれを尋ねることができます。


2
ArduinoISPはSPIインターフェースをclock / 128に設定するため、16 MHz Unoの場合、接続されたAVRは16 MHz / 128 = 125 kbit / sでプログラムされます。ただし、制限要因はシリアル速度であり、PROG_FLICKERが設定されている場合、各ページコミットに30 msの遅延が追加されます。
user2973 14

4

私はまさにこの問題を抱えていました。ATtinyが外部クロックに設定されている場合、ArduinoISPは外部クリスタルなしでそれをプログラムすることができません。16 MHzクリスタルと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

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

使った。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.