問題
ATtiny44Aを使った回路を組んだところ、以下のようなエラーが出て、プログラムできなくて困っていた。$ avrdude -v -c usbasp -p t44 -U signature:r:/dev/stdout:i avrdude: error: program enable: target doesn't answer. 1 avrdude: initialization failed, rc=-1 Double check connections and try again, or use -F to override this check.
このようなトラブル時に何を試行錯誤すると良いのかも含め、備忘録として残しておく。
解決方法
結局のところ、SCKの周波数が高いことが原因だったようで、-B 10
をつけて解決した。
以下が実行例。
$ avrdude -B 10 -F -c usbasp -p t44 -U signature:r:/dev/stdout:i avrdude: set SCK frequency to 93750 Hz avrdude: AVR device initialized and ready to accept instructions Reading | ################################################## | 100% 0.00s avrdude: Device signature = 0x1e9207 (probably t44) avrdude: reading signature memory: Reading | ################################################## | 100% 0.00s avrdude: writing output file "/dev/stdout" :030000001E920746 :00000001FF avrdude: safemode: Fuses OK (E:FF, H:DF, L:62) avrdude done. Thank you.
試行錯誤
情報通りに-F
をつけて試しにsignatureを読んでみると、以下のように変なdevice signatureが表示され、この値が毎回変わる。
$ avrdude -F -c usbasp -p t44 -U signature:r:/dev/stdout:i avrdude: error: program enable: target doesn't answer. 1 avrdude: initialization failed, rc=-1 avrdude: AVR device initialized and ready to accept instructions avrdude: Device signature = 0x37f912 avrdude: Expected signature for ATtiny44 is 1E 92 07 avrdude done. Thank you.
データシートを再確認し、ATtiny44AはATtiny44と同じsignatureが書かれているようなので、-p t44
でプログラムできることを確かめた。配線間違いが心配になり、配線を再確認したが異常は見つからない。
Verboseオプションをつけて表示される内容を確認した。 すると、以下のような情報が表示されていたので、SCKを遅くしたところ動作した。
avrdude: auto set sck period (because given equals null)