問題
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)